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

时间:2015-11-05 10:28:55

标签: php excel phpexcel codeplex phpexcelreader

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

1 个答案:

答案 0 :(得分:1)

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

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

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