我正在使用phpexcel库来读取一个excel文件。它的工作效率达到了99%。但有时它也会读取空列。我的代码是
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('Error loading file');
}
$worksheet=$objPHPExcel->getActiveSheet();) {
$worksheetTitle = $worksheet->getTitle();
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
有时候,即使excel列中的数据达到'C',为什么呢?$ highestcolumn返回'WVL'。 另外我想检查特定列下的所有行是否为空,是否有任何简单的方法来执行它而不是使用for循环迭代所有行。
答案 0 :(得分:6)
getHighestRow()
和getHighestColumn()
方法的工作原理是测试与单元格相关的 任何 ,即使这样做也是如此样式设置或命名范围或打印设置或列/行设置,如宽度/高度或隐藏。
这就是getHighestDataRow()
和getHighestDataColumn()
方法存在的原因。这两种方法查看单元格中的实际数据。
注意:仅仅因为在MS Excel中查看单元格时看起来是空的,并不意味着它实际上是空的。 NULL是一个有效的单元格值,空格字符也是可见的。
在回答第二个问题时:您可以将可选参数传递给getHighestRow()
,getHighestColumn()
以及getHighestDataRow()
和getHighestDataColumn()
,以便传递给行号getHighestColumn()
或getHighestDataColumn()
将返回指定行中的最高列;传递给getHighestRow()
或getHighestDataRow()
的专栏信函将返回该列中的最高行。
e.g。
$highestColumnInRow5 = $worksheet->getHighestColumn(5);
或
$highestDataRowInColumnAA = $worksheet->getHighestDataRow('AA');