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

She*_*rin 1 php phpexcel

我正在使用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;
Run Code Online (Sandbox Code Playgroud)

有时候,即使excel列中的数据达到"C"为什么,$ highestcolumn也会返回'WVL'.另外我想检查特定列下的所有行是否为空,是否有任何简单的方法来执行它而不是使用for循环迭代所有行.

Mar*_*ker 6

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

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

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


在回答你的第二个问题:你可以传递一个可选的参数为getHighestRow(),getHighestColumn()并在getHighestDataRow()getHighestDataColumn(),所以行号传递到getHighestColumn()getHighestDataColumn()将返回指定行中最高的列; 并且传递给getHighestRow()getHighestDataRow()将返回该列中最高行的列字母.

例如

$highestColumnInRow5 = $worksheet->getHighestColumn(5);
Run Code Online (Sandbox Code Playgroud)

要么

$highestDataRowInColumnAA = $worksheet->getHighestDataRow('AA');
Run Code Online (Sandbox Code Playgroud)