【问题标题】:PHPExcel number format not displaying correctlyPHPExcel 数字格式显示不正确
【发布时间】:2013-09-01 12:43:33
【问题描述】:

我有一个从 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 格式时得到######,要么在使用 STRING 格式时得到科学记数法 (2,01308E+16)不使用任何内容或 TEXT 格式或上面提到的输出(最后 2 位数字为零)

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

任何帮助将不胜感激。

【问题讨论】:

    标签: php format phpexcel number-formatting numerical


    【解决方案1】:

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

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

    【讨论】:

    • 这绝对应该是选择的答案......希望我在两个小时前偶然发现这个!
    • setCellValueExplicit 是成功的关键
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多