PHPExcel数字格式无法正确显示

时间:2013-08-29 07:37:24

标签: php format phpexcel number-formatting numerical

我有一个来自mysql的excel导出,它应该显示一个包含17位数值(唯一的数字,引用)的列的数据。 使用PHPExcel时,除此参考之外的所有内容都显示正常。

我用过: $objPHPExcel->getActiveSheet()->getStyle('F'.$xlsRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); 接近但是......

比较Excel工作表中的值和数据库中的原始数据时,我看到引用的最后2位数字设置为00.

例如:

`20130829071002200` instead of `20130829071002210`

我尝试在setFormatCode和(PHPExcel_Style_NumberFormat ::)中设置其他(数字和非数字)格式,但是当使用STRING格式时,我得到######,科学记数法(2,01308E + 16)使用无或TEXT格式或上面提到的输出(最后2位为零)

不知道我做错了什么......

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:8)

我建议这是因为您的数字太大而无法存储为32位整数值,因此它隐式设置为float(包含所有相应的精度问题)。如果你正在使用这么大的数值,那么你真的需要将它们视为字符串。将值存储在PHPExcel单元格中时,请使用带有字符串类型的setCellValueExplicit()。

$objPHPExcel->getActiveSheet()
    ->setCellValueExplicit(
        'A1', 
        '20130829071002210', 
        PHPExcel_Cell_DataType::TYPE_STRING
    );