我在Excel工作表中有一些值为75.4
,66.8
,有些则为整数24554
。在数据库中,我将列类型设置为varchar(11)
。问题是某些十进制值正确显示,一些显示为75.40000000000001
或73.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配置设置,因为本地和服务器不同但不确定。请指导我完成这个。
答案 0 :(得分:2)
经过深入研究,我得到了解决方案。我们可以选择以下两个选项之一:
format
。它被赋予一般,我将其更改为数字,现在值与excel表格完全相同。覆盖ini文件中的浮点数精度。 PHPExcel修改了精度,因此我们应该采用以下方式:
$iniPrecision = ini_get('precision');
$objPHPExcel = PHPExcel_IOFactory::load($inputFilename);
ini_set('precision', $iniPrecision);