到底是怎么回事!我用PhpExcel将长表从xlsx转换为csv。一切都很好,但现在,我有点困惑,因为我的上一个文件中的值已经从772,68更改为772.6799999999999。
我使用CSV文件进行报告,这个值太长了,(远程)解释器无法理解。
我无法理解发生的事情。
以下是来源:
function convertXLStoCSV($infile,$outfile) {
$fileType = PHPExcel_IOFactory::identify($infile);
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($infile);
$max = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$objPHPExcel->getActiveSheet()->getStyle('B2:B'.$max.'')->getNumberFormat()->setFormatCode('YYYY.MM.DD');
$objPHPExcel->getActiveSheet()->getStyle('AP2:AP'.$max.'')->getNumberFormat()->setFormatCode('YYYY.MM.DD');
$objPHPExcel->getActiveSheet()->getStyle('AQ2:AQ'.$max.'')->getNumberFormat()->setFormatCode('YYYY.MM.DD');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->setDelimiter(';');
$objWriter->save($outfile);
}
答案 0 :(得分:0)
PHPExcel没有更改任何值。存储在您正在加载的文件中的值是浮点值772.6799999999999,您可能在原始文件中有一个数字格式掩码,只显示为2dp,但是因为您没有加载该数字格式化掩码(因为您正在使用$objReader->setReadDataOnly(true);
),然后在保存为csv时无法应用该掩码。