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で指定された小数点以下の桁数を(常に)表示するにはどうすればよいですか?
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('0.00');
セルA1の値が数値であり、フォーマットされた文字列でない限り、機能するはずです... sprintfを使用してExcelのフォーマットを強制しようとせず、単にフォーマットコードを使用してください。
カンマ付きの数値としてフォーマットされます。値が9桁を超えていないと仮定します。
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('###,###,###.##');
これを行うこともできます:
$sheet->setCellValue("A1",sprintf("%0.2f",$row['price']),true)->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
SetCellValueに「true」を追加すると、ワークシートではなくセルを直接参照し、セル値なしでgetStyleメソッドを呼び出すことができます。
特殊文字が必要な場合は、html_entity_decodeを使用してください。
$currencyFormat = html_entity_decode("€ 0,0.00",ENT_QUOTES,'UTF-8');
$objPHPExcel->getActiveSheet()
->getStyle("A1")
->getNumberFormat()->setFormatCode($currencyFormat);
試してみてください:
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('### ### ### ##0.00');
できます。