我需要在Excel(xlsx)中显示两个小数位。我正在使用PHPExcel
。在PHP中,我可以使用类似下面的内容来仅显示指定的小数步数。
echo sprintf("%0.2f", $row['price']);
总是显示两位小数,即使该值不包含小数点,即如果$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中显示指定的小数位数?
答案 0 :(得分:26)
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('0.00');
应该有效,只要单元格A1中的值是数字而不是格式化字符串...不要尝试使用sprintf强制Excel格式化,只需使用格式代码。
答案 1 :(得分:4)
用逗号格式化为数字。假设该值未超过9位数。
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('###,###,###.##');
答案 2 :(得分:2)
如果你想要一些特殊字符,只需使用html_entity_decode:
$currencyFormat = html_entity_decode("€ 0,0.00",ENT_QUOTES,'UTF-8');
$objPHPExcel->getActiveSheet()
->getStyle("A1")
->getNumberFormat()->setFormatCode($currencyFormat);
答案 3 :(得分:2)
$objPHPExcel->getActiveSheet()->getStyle('ce')->getNumberFormat()->setFormatCode('0.00');
答案 4 :(得分:2)
你也可以这样做:
$sheet->setCellValue("A1",sprintf("%0.2f",$row['price']),true)->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00);
添加' true'在setCellValue,你直接引用单元格而不是工作表,你可以调用没有单元格值的getStyle方法。
答案 5 :(得分:1)
尝试:
$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('### ### ### ##0.00');
它有效。