web-dev-qa-db-ja.com

Excelでは常に指定された小数点以下の桁数を表示します

Excel(xlsx)で小数点以下2桁を表示する必要があります。 PHPExcel を使用しています。 PHPでは、次のようなものを使用して、指定した小数点以下の桁数のみを表示できます。

echo sprintf("%0.2f", $row['price']);

値に小数点が含まれていない場合でも、常に小数点以下2桁が表示されます。つまり、$row['price']の値が1500の場合、1500.00がエコーされます。同じ値をExcelに書き込む必要があります。私は試した

$sheet->setCellValue("A1", sprintf("%0.2f", $row['price']));

ただし、1500を表示する代わりに1500.00を表示します(Excelは自動的に数値であり、小数点以下の部分、つまりこの場合は.00が切り捨てられるため)。

私も以下を試しました

$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('0.00');

しかし、指定されたものを達成するだけでは十分ではありません。

PHPExcelを使用してExcelで指定された小数点以下の桁数を(常に)表示するにはどうすればよいですか?

13
Tiny
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('0.00'); 

セルA1の値が数値であり、フォーマットされた文字列でない限り、機能するはずです... sprintfを使用してExcelのフォーマットを強制しようとせず、単にフォーマットコードを使用してください。

28
Mark Baker

カンマ付きの数値としてフォーマットされます。値が9桁を超えていないと仮定します。

$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('###,###,###.##');
5
robert.dejesica

これを行うこともできます:

$sheet->setCellValue("A1",sprintf("%0.2f",$row['price']),true)->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);

SetCellValueに「true」を追加すると、ワークシートではなくセルを直接参照し、セル値なしでgetStyleメソッドを呼び出すことができます。

3
Ichigo79

特殊文字が必要な場合は、html_entity_decodeを使用してください。

$currencyFormat = html_entity_decode("€ 0,0.00",ENT_QUOTES,'UTF-8');
$objPHPExcel->getActiveSheet()
            ->getStyle("A1")
            ->getNumberFormat()->setFormatCode($currencyFormat);
2
Bruno

試してみてください:

$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('### ### ### ##0.00');

できます。

1
simhumileco