我正在尝试读取一个包含电话号码的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 文件粘贴的顶部:
ini_set('precision', '15');
这套解决了我的问题:
返回: 3.5410705883463E+14实际值:357888057644723
$totalRows = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
$objPHPExcel->getActiveSheet()
->getStyle('A1:A' . $totalRows)
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
May be help!