5

我有一个从 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 位数字为零)

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

任何帮助,将不胜感激。

4

1 回答 1

8

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

$objPHPExcel->getActiveSheet()
    ->setCellValueExplicit(
        'A1', 
        '20130829071002210', 
        PHPExcel_Cell_DataType::TYPE_STRING
    );
于 2013-08-29T08:05:18.300 回答