2017-05-17 3 views
1

私はExcelシートにいくつかの値を75.4,66.8、一部を整数24554としています。データベースでは、私はvarchar(11)として列の種類を設定しました。問題は、十進数値の一部が正しく表示されていて、一部が75.40000000000001または73.6と表示されていることが、73.59000000と表示されていることです。私は1つのローカルm/cと1つのワークスペースの2つの環境を持っています。私のローカルm/cでは正しく表示されています。だから、私は何が問題か理解していない。以下は私のコードですphpexcelが正しくない小数点の値を読み取る

$sheet = $objPHPExcel->getSheet(0); 
$highestRow = $sheet->getHighestRow(); 
$highestColumn = $sheet->getHighestColumn(); 

$getValues = array(); 

for ($row = 4; $row <= $highestRow; $row++){ 
    // Read a row of data into an array 
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row); //gives the sheet values 
    if(!empty($rowData[0][0])){ //if row is null 
     // Insert row data array into database 
     $getValues[] = $this->getValuesModel($rowData, $data); 
    } 

} 

私はローカルとサーバーが異なるが確信が持てないので、いくつかのPHP構成設定があるかもしれないとは思っていません。親切にも、これを通して私を導く。

答えて

2

これに多くを掘り下げた後、私は解決策を得ました。

  1. 問題はphpexcelではなく、Excelシートで定義されたセルのformatで問題が発生していました。 一般としました。に変更しました。値はExcelシートとまったく同じです。
  2. iniファイルの浮動小数点精度を上書きする。 PHPExcelは精度を変更するため、以下のようにします。

    $iniPrecision = ini_get('precision'); 
    $objPHPExcel = PHPExcel_IOFactory::load($inputFilename); 
    ini_set('precision', $iniPrecision); 
    
関連する問題