2016-03-23 10 views
1

何が!私はPhpExcelで長いテーブルをxlsxからcsvに変換します。私の最後のファイルで値が772,68から772.6799999999999に変更されたので、すべてがうまくいっていましたが、今はちょっと困惑しています。PhpExcellは変換ファイルの値を変更します

報告に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

PHPExcelは、任意の値を変更していない。ここで

はソースです。ロードしているファイルに格納されている値は浮動小数点値772.6799999999999です。元のファイルに数字の書式マスクを2dpにしか表示しないようにしましたが、数値書式のマスクをロードしないので $objReader->setReadDataOnly(true);を使用しています)、csvとして保存するとそのマスキングは適用できません。

+0

ありがとうございました。 (: '$最大' 'AO AO2'。。) - > getNumberFormat() - > setFormatCode(PHPExcel_Style_NumberFormat>でgetStyle - \t $ objPHPExcel-> GetActiveSheet関数():これは私のために働いている :私は他の解決策を見つけます:: FORMAT_NUMBER_00); –

+0

数値形式のマスクが適用されていることを確認すると、元のファイルのマスクであっても、保存前に自分自身を適用したマスクであっても問題は解決されます –

関連する問題