我使用phpexcel读取并导入一个CSV文件,其中一个单元格长度为18位,如123456789123456789,虽然我使用ini_set("precision", "18");
,但我得到的值不正确。如何解决这个问题?
ini_set("precision", "20");
$objReader = PHPExcel_IOFactory::createReader('CSV')
->setDelimiter(',')
->setInputEncoding('GBK')
->setEnclosure('"')
->setLineEnding("\r\n")
->setSheetIndex(0);
$objPHPExcel = $objReader->load($file);
$worksheet = $objPHPExcel->getActiveSheet();
foreach ($worksheet->getRowIterator() as $row) {
echo 'Row number: ' . $row->getRowIndex() . "\r\n<br>";
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
foreach ($cellIterator as $cell) {
if (!is_null($cell)) {
echo 'Cell: ' . $cell->getCoordinate() . ' - ' . (string)$cell->getValue() . "\r\n<br>";
}
}
}
答案 0 :(得分:2)
在评论中你提到错误的输出有两个额外的零。这肯定是由小数分隔符的错误解释引起的,因此它被视为千位分隔符。
更改PHP服务器的区域设置,使其使用该点作为小数点分隔符 - 您可能还需要更改千位分隔符(如果它当前是一个点)。
答案 1 :(得分:0)
Convert the long integer to string you can read the value
$value = 123456789123456789;
$value = (string)$value;
答案 2 :(得分:0)
上次尝试
$keyCell = $sheet->getCellByColumnAndRow(1,5)->getFormattedValue();
现在将$ cell-&gt; getvalue()替换为$ keyCell 和 这里1,5是静态列和行,在你的代码中你必须动态地使用它