我正在尝试用phpexcel读取一些excel文件,到目前为止工作正常.虽然phpexcel有点太聪明了,但是从我的单元格中移除了前导零.我想我需要告诉它将单元格视为文本字符串,而不是一般或数字.但我失败了.我甚至在stackoverflow上发现了关于此的线程,但建议的解决方案根本不起作用.
下面是我正在研究的东西的片段.
foreach(@$objWorksheet->getRowIterator() as $row){
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
foreach($cellIterator as $cell){
#$objWorksheet->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('@');
$cells[] = $cell->getValue();
}
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?我不想仅限于阅读数字内容,因为我无法控制用户将上传的内容.将一切都视为字符串将是完美的.
/ peder
getValue() 方法准确地完成了它应该做的事情,而不是试图变得聪明。它返回存储在单元格中的实际值。如果该单元格包含整数,则返回整数;如果单元格包含浮点数,则返回浮点数;如果它包含一个字符串,则返回一个字符串。聪明的是将该值作为格式化字符串返回(如果合适,则带有前导零),然后您需要使用一种相当不同的方法,并将单元格格式应用于返回的值。
foreach($cellIterator as $cell){
$cells[] = PHPExcel_Style_NumberFormat::toFormattedString( $cell->getValue(),
$objPHPExcel->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode()
);
}
Run Code Online (Sandbox Code Playgroud)
或者如果单元格包含公式:
foreach($cellIterator as $cell){
$cells[] = PHPExcel_Style_NumberFormat::toFormattedString( $cell->getCalculatedValue(),
$objPHPExcel->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode()
);
}
Run Code Online (Sandbox Code Playgroud)
并且请不要使用 @ 来尝试抑制错误。PHPExcel 会抛出异常,您确实应该捕获这些异常。
但是,对于您正在做的事情,您可能会考虑工作表的 toArray() 方法,该方法将返回工作表中所有单元格值的数组。
| 归档时间: |
|
| 查看次数: |
10940 次 |
| 最近记录: |