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

我正在读取一个Excel文件,PHPExcel codeplex有时会将一个空单元格视为一个值单元格。 例如:

如果我的Excel有128列,最大是DV有时会根据Excel和用户的需求而有所不同。 最多是126列。 最less是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。

如何解决这个问题?

即使清理并创build一个新的Excel有时也会发生。

如何在读取(加载)Excel之前设置最大的列和行,或者如何避免空单元格?

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

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

还要注意,可能对您显示为空的单元格可能仍包含空string或空string。 这仍然是一个数据值。