PhpExcel 更改我转换文件中的一个值

PhpExcell changes a value in my converted file

什么鬼!我使用 PhpExcel 将长 table 从 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);

}

PHPExcel 没有更改任何值。您正在加载的文件中存储的值是一个浮点值 772.6799999999999,您可能在原始文件中对其设置了数字格式掩码以仅将其显示为 2dp,但由于您没有加载数字格式掩码(因为你正在使用 $objReader->setReadDataOnly(true);) 那么当你保存为 csv 时就不能应用屏蔽。