使用phpexcel库删除excel文件中的空列


Remove empty columns in an excel file using phpexcel library

我正在使用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;

有时$highestcolumn返回'WVL',即使excel列中的数据高达'C'为什么?。此外,我想检查特定列下的所有行是否为空,是否有任何简单的方法可以做到这一点,而不是使用for循环迭代所有行。

getHighestRow()getHighestColumn()方法的工作基础是测试与单元格相关的任何东西,即使是样式设置、命名范围、打印设置或列/行设置(如宽度/高度或隐藏)。

这就是getHighestDataRow()getHighestDataColumn()方法存在的原因。这两种方法查看单元格中的实际数据。

注意:在MS Excel中查看单元格时,单元格看起来是空的,并不意味着它实际上是空的。NULL是一个有效的单元格值,空格字符也是,两者都不可见。


在回答第二个问题时:您可以向getHighestRow()getHighestColumn()以及getHighestDataRow()getHighestDataColumn()传递一个可选参数,因此传递给getHighestColumn()getHighestDataColumn()的行号将返回指定行中的最高列;并且传递给CCD_ 11或CCD_。

例如

$highestColumnInRow5 = $worksheet->getHighestColumn(5);

$highestDataRowInColumnAA = $worksheet->getHighestDataRow('AA');