将空单元格读取为数据单元格
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 单元格中实际包含数据值的最高行和列。虽然效率较低,但它们实际上会在调用时计算最高的单元格引用,速度较慢,但始终准确。
另请注意,在您看来可能为空的单元格可能仍包含空值或空字符串。这仍然是一个数据值。
我正在阅读一个 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 单元格中实际包含数据值的最高行和列。虽然效率较低,但它们实际上会在调用时计算最高的单元格引用,速度较慢,但始终准确。
另请注意,在您看来可能为空的单元格可能仍包含空值或空字符串。这仍然是一个数据值。