0

我正在阅读一个 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之前设置最大列和行数或如何避免空单元格?

4

1 回答 1

1

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

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

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

于 2015-11-05T10:59:41.470 回答