phpexcel读取错误的十进制值

时间:2017-05-17 11:30:35

标签: php phpexcel

我在Excel工作表中有一些值为75.466.8,有些则为整数24554。在数据库中,我将列类型设置为varchar(11)。问题是某些十进制值正确显示,一些显示为75.4000000000000173.6显示为73.59000000。我有2个环境,一个本地m / c和一个工作区。在我当地的m / c中,它显示正确。所以,我不明白可能是什么问题。以下是我的代码

$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配置设置,因为本地和服务器不同但不确定。请指导我完成这个。

1 个答案:

答案 0 :(得分:2)

经过深入研究,我得到了解决方案。我们可以选择以下两个选项之一:

  1. 问题不在于phpexcel,而是在Excel工作表中定义的单元格的format。它被赋予一般,我将其更改为数字,现在值与excel表格完全相同。
  2. 覆盖ini文件中的浮点数精度。 PHPExcel修改了精度,因此我们应该采用以下方式:

     $iniPrecision = ini_get('precision');
     $objPHPExcel    = PHPExcel_IOFactory::load($inputFilename);
     ini_set('precision', $iniPrecision);