14

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

4

6 回答 6

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

应该可以工作,只要单元格 A1 中的值是数字而不是格式化的字符串...不要尝试使用 sprintf 强制 Excel 格式化,只需使用格式代码。

于 2012-05-31T12:08:48.333 回答
5

格式为带逗号的数字。假设该值不超过 9 位。

$sheet->getStyle("A1")->getNumberFormat()->setFormatCode('###,###,###.##');
于 2013-07-10T08:59:46.733 回答
4

你也可以这样做:

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

在 setCellValue 处添加“true”,您可以直接引用单元格而不是工作表,并且可以在没有单元格值的情况下调用 getStyle 方法。

于 2016-10-04T16:04:04.650 回答
3

如果您想要一些特殊字符,只需使用 html_entity_decode:

$currencyFormat = html_entity_decode("€ 0,0.00",ENT_QUOTES,'UTF-8');
$objPHPExcel->getActiveSheet()
            ->getStyle("A1")
            ->getNumberFormat()->setFormatCode($currencyFormat);
于 2013-08-12T17:26:13.410 回答
2
$objPHPExcel->getActiveSheet()->getStyle('ce')->getNumberFormat()->setFormatCode('0.00');
于 2015-07-25T19:00:46.780 回答
2

试试看:

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

有用。

于 2017-06-12T13:38:57.457 回答