Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PhpExcell更改转换文件中的值_Php_Csv_Phpexcel_Xlsx - Fatal编程技术网

PhpExcell更改转换文件中的值

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

见鬼!我使用PhpExcel将长表从xlsx转换为csv。一切都很好,但现在,我有点困惑,因为我的上一个文件中的值已从772,68更改为772.6799999999

我使用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.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);不管是原始文件中的掩码,还是保存前自己应用的掩码,确保应用数字格式掩码都可以解决问题