phpexcel 从单元格中读取 18 位长数字
phpexcel read 18 digitals long number from cell
我使用 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>";
}
}
}
Convert the long integer to string you can read the value
$value = 123456789123456789;
$value = (string)$value;
您在评论中提到错误的输出有两个额外的零。这肯定是由于对小数分隔符的错误解释导致的,因此将其视为千位分隔符。
更改 PHP 服务器的区域设置,使其使用点作为小数点分隔符——您可能还需要更改千位分隔符(如果它当前是点)。
最后一次尝试
$keyCell = $sheet->getCellByColumnAndRow(1,5)->getFormattedValue();
现在将 $cell->getvalue() 替换为 $keyCell
和
这里 1,5 是静态列和行,在你的代码中你必须动态使用它
我使用 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>";
}
}
}
Convert the long integer to string you can read the value
$value = 123456789123456789;
$value = (string)$value;
您在评论中提到错误的输出有两个额外的零。这肯定是由于对小数分隔符的错误解释导致的,因此将其视为千位分隔符。
更改 PHP 服务器的区域设置,使其使用点作为小数点分隔符——您可能还需要更改千位分隔符(如果它当前是点)。
最后一次尝试
$keyCell = $sheet->getCellByColumnAndRow(1,5)->getFormattedValue();
现在将 $cell->getvalue() 替换为 $keyCell 和 这里 1,5 是静态列和行,在你的代码中你必须动态使用它