PhpExcell在我转换的文件中更改了一个值

时间:2016-03-23 11:22:05

标签: php csv phpexcel xlsx

到底是怎么回事!我用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);

}

1 个答案:

答案 0 :(得分:0)

PHPExcel没有更改任何值。存储在您正在加载的文件中的值是浮点值772.6799999999999,您可能在原始文件中有一个数字格式掩码,只显示为2dp,但是因为您没有加载该数字格式化掩码(因为您正在使用$objReader->setReadDataOnly(true);),然后在保存为csv时无法应用该掩码。