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 是静态列和行,在你的代码中你必须动态使用它