始终在Excel中显示指定的小数位数

时间:2012-05-31 11:50:51

标签: php phpexcel

我需要在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中显示指定的小数位数?

6 个答案:

答案 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');

它有效。