我对PHPExcel的行为感到有些困惑,我有一些文件。 这些文件包含约。 3000行数据,但根据PHPExcel,使用的最后一行是65535.我尝试从文件中删除几行并将它们粘贴到一个新文件中,但无济于事。无论是Excel5还是Excel2007格式都无关紧要,结果总是相同。
在这里找到错误的任何想法?
CODE:
$cr=$xls->getActiveSheet()->getHighestRow();
$cn=PHPExcel_Cell::columnIndexFromString($xls->getActiveSheet()->getHighestColumn());
for ($z=2; $z<=$cr; $z++) {
$class=($z%2)?"odd":"even";
?>
<tr class="<?php echo $class; ?>">
<?php for ($s=0; $s<$cn; $s++) {
$tmp=$xls->getActiveSheet()->getCellByColumnAndRow($s,$z)->getValue();?>
<td><?php echo $tmp; ?></td>
<?php } ?> </tr>
<?php } ?>
答案 0 :(得分:6)
所需要的只是一个空白单元格,最后一个col / row可能比您预期的要高很多。即使是打印布局或样式也可能伪造存储的最高值。在MS Excel中打开文件并按Ctrl-End,它将带您进入Excel识别的最后一个单元格。
除了getHighestRow()和getHighestColum()之外,还有一个(较慢的)getHighestDataRow()和getHighestDataColumn()方法,用于标识实际包含单元格数据的最高行和列。
答案 1 :(得分:1)
$objPHPExcel->setActiveSheetIndex(0)->getHighestRow();
或
$objPHPExcel->setActiveSheetIndex(0)->calculateWorksheetDimension();
返回一个范围作为字符串,如A1:AC2048
虽然尾随空行和列包含在这些行中。
或者您可以使用迭代器遍历现有的行和列,以获取工作表使用范围内的每个单元格。有关示例,请参阅生产分发中的/Tests/28iterator.php。可以将迭代器设置为忽略空格。
来源:
How to find out how many rows and columns to read from an Excel file with PHPExcel?
答案 2 :(得分:1)
从具有数据的最后一行之后的第一个空白单元格中ctrl + end。 例如所以,如果我有最后一行数据是A3到D3。我将在A4格式中执行ctrl_end
右键单击选定的行(按照第一步选择的行)并选择“删除”。
它将打开弹出窗口。选择“整行”并单击“确定”按钮
因此,无论您的代码是什么,您必须加载Excel数据,它只会读取那些有数据的行。
答案 3 :(得分:-1)
这不是错误。 “空”电子表格仍包含大量空单元格。 Excel通常有65536行和256个coloumns。