PhpExcell更改转换文件中的值
见鬼!我使用PhpExcel将长表从xlsx转换为csv。一切都很好,但现在,我有点困惑,因为我的上一个文件中的值已从772,68更改为772.6799999999 我使用CSV文件进行报告,该值太长,(远程)解释器无法理解 我不明白发生了什么事 资料来源如下:PhpExcell更改转换文件中的值,php,csv,phpexcel,xlsx,Php,Csv,Phpexcel,Xlsx,见鬼!我使用PhpExcel将长表从xlsx转换为csv。一切都很好,但现在,我有点困惑,因为我的上一个文件中的值已从772,68更改为772.6799999999 我使用CSV文件进行报告,该值太长,(远程)解释器无法理解 我不明白发生了什么事 资料来源如下: function convertXLStoCSV($infile,$outfile) { $fileType = PHPExcel_IOFactory::identify($infile); $objReader = P
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);
}
PHPExcel没有更改任何值。您正在加载的文件中存储的值是一个浮点值772.67999999999,您可能在原始文件中有一个数字格式掩码,仅将其显示为2dp,但由于您没有加载数字格式掩码(因为您使用的是
$objReader->setReadDataOnly(true);
)然后,当保存为csv时,无法应用该屏蔽。PHPExcel未更改任何值。您正在加载的文件中存储的值是一个浮点值772.67999999999,您可能在原始文件中有一个数字格式掩码,仅将其显示为2dp,但由于您没有加载数字格式掩码(因为您使用的是$objReader->setReadDataOnly(true);
)那么,当您保存为csv时,无法应用该屏蔽。谢谢。我找到了另一个解决方案:这对我很有用:$objPHPExcel->getActiveSheet()->getStyle('AO2:AO'.$max.')->getNumberFormat()->setFormatCode(PHPExcel\u Style\u NumberFormat::FORMAT\u NUMBER\u 00);好的,确保应用数字格式掩码将解决问题,无论是原始文件中的掩码,还是您在保存之前应用的掩码。我找到了另一个解决方案:这对我很有用:$objPHPExcel->getActiveSheet()->getStyle('AO2:AO'.$max.')->getNumberFormat()->setFormatCode(PHPExcel\u Style\u NumberFormat::FORMAT\u NUMBER\u 00);不管是原始文件中的掩码,还是保存前自己应用的掩码,确保应用数字格式掩码都可以解决问题