phpexcel从单元格中读取18位数字的长数字

时间:2016-11-28 05:39:33

标签: php phpexcel

我使用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>";

            }
        }
    }

3 个答案:

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