我有一个从mysql导出的excel,它应该显示一个值为17位的列中的数据(一个唯一的数字引用)。使用PHPExcel时,除此引用外,其他所有内容都显示良好。
我曾经:$objPHPExcel->getActiveSheet()->getStyle('F'.$xlsRow)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
这很接近,但是。。。
当比较Excel工作表中的值和数据库中的原始数据时,我看到引用的最后两位数字被设置为00。
例如:
`20130829071002200` instead of `20130829071002210`
我尝试在setFormatCode和(PHPExcel_Style_NumberFormat::)中设置其他(数字和非数字)格式,但我要么在使用STRING格式时获得#######,要么在不使用任何内容或TEXT格式时获得科学记数法(201308E+16),要么在上面提到的输出(最后两位为零)
不知道我做错了什么。。。
如有任何帮助,我们将不胜感激。
我建议这是因为你的数字太大,无法存储为32位整数值,所以它被隐式设置为浮点(有所有相应的精度问题)。如果您使用这么大的数值,那么您真的需要将它们视为字符串。将值存储在PHPExcel单元格中时,请将setCellValueExplicit()与字符串类型一起使用。
$objPHPExcel->getActiveSheet()
->setCellValueExplicit(
'A1',
'20130829071002210',
PHPExcel_Cell_DataType::TYPE_STRING
);