将空单元格读取为数据单元格

Reading empty cells as data cells

我正在阅读一个 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或如何避免空单元格?

如果行和列包含任何内容(包括样式或印刷信息)而不是简单地包含内容,则按 getHighestColumn()getHighestRow() 计数。加载电子表格时也会计算这些值,因此如果您随后向工作表添加新行或新列,这些值可能不准确。

而是使用 getHighestDataColumn()getHighestDataRow() 方法 return 单元格中实际包含数据值的最高行和列。虽然效率较低,但它们实际上会在调用时计算最高的单元格引用,速度较慢,但​​始终准确。

另请注意,在您看来可能为空的单元格可能仍包含空值或空字符串。这仍然是一个数据值。