我正在阅读Excel文件,有时PHPExcel codeplex将空单元格视为值单元格。例如:
如果我的Excel有128列,则最大值为DV,有时会因Excel和用户要求而异。最大值为126列。最少8列。最大行也是250。
----------------------
A | B | ..... |DU |DV|
----------------------
我使用以下代码加载Excel:
set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/');
include 'PHPExcel/IOFactory.php';
$inputFileName = $target_file;
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
现在问题是PHPExcel显示错误的最大列数和行数,最大列数为126(DV),最大行数为245.
但是,当我使用以下代码时,我得到了错误的值:
$lastColumn = $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
$lastRow = $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
而不是126我得到1800+( AMK )作为最大列,最大行显示为65536。
如何解决此问题?
即使清除并创建新Excel,有时也会发生这种情况。
如何在读取(加载)Excel之前设置最大列数和行数或如何避免空单元格?
答案 0 :(得分:1)
行和列由getHighestColumn()
和getHighestRow()
计算,如果它们包含任何内容(包括样式或打印信息),而不是简单地包含内容。加载电子表格时也会计算这些值,因此如果随后向工作表添加新行或列,则可能不准确。
而是使用getHighestDataColumn()
和getHighestDataRow()
方法返回实际包含单元格中数据值的最高行和列。虽然效率较低,但实际上它们在调用时会计算出最高的单元格参考值,这种参考值较慢,但始终准确。
另请注意,可能显示为空的单元格仍可能包含空字符串或空字符串。这仍然是一个数据值。