PHPExcel,从excel文件中获取长文本作为文本

问题描述 投票:2回答:2

我正在尝试阅读包含电话号码的excel文件。读取该单元格时,它将其作为数字而不是文本返回。因此,不是将电话号码设为0012312345678而是将其设为12312345000电话号码全部在第一列(A)中。

我读取excel文件的代码是:

$retArray = array();
$Reader = PHPExcel_IOFactory::createReaderForFile($file);
$Reader->setReadDataOnly(true);
$objXLS = $Reader->load($file);
$objWorksheet = $objXLS->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestCol = $objWorksheet->getHighestColumn();
$highestCol = PHPExcel_Cell::columnIndexFromString($highestCol);
$cnt = 0;
$range = "A:A";
for ($row = 1; $row <= $highestRow; $row++) {
    for ($col = 0; $col <= $highestCol-1; $col++){
        $objWorksheet->getStyle($range)->getNumberFormat()->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );
        $retArray[$row][$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
    }
    $cnt++;
}
$objXLS->disconnectWorksheets();
unset($objXLS);
echo "$cnt" . "|" . json_encode($retArray);
php phpexcel
2个回答
7
投票

在php文件的顶部粘贴:

ini_set('precision', '15');

这套装解决了我的问题:

返回:3.5410705883463E + 14真值:357888057644723


0
投票
$totalRows = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$objPHPExcel->getActiveSheet()
            ->getStyle('A1:A' . $totalRows)
            ->getNumberFormat()
            ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);

May be help!
© www.soinside.com 2019 - 2024. All rights reserved.