PHPExcel - 读取最后一行

时间:2012-06-19 08:59:42

标签: phpexcel

我对PHPExcel的行为感到有些困惑,我有一些文件。 这些文件包含约。 3000行数据,但根据PHPExcel,使用的最后一行是65535.我尝试从文件中删除几行并将它们粘贴到一个新文件中,但无济于事。无论是Excel5还是Excel2007格式都无关紧要,结果总是相同。

在这里找到错误的任何想法?

CODE:

    $cr=$xls->getActiveSheet()->getHighestRow();
    $cn=PHPExcel_Cell::columnIndexFromString($xls->getActiveSheet()->getHighestColum‌​n()); 
    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 } ?>

4 个答案:

答案 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)

马克贝克是对的。所以我通过以下步骤解决了问题:

  1. 从具有数据的最后一行之后的第一个空白单元格中ctrl + end。 例如所以,如果我有最后一行数据是A3到D3。我将在A4格式中执行ctrl_end

    • 这会突出显示空行数
  2. 右键单击选定的行(按照第一步选择的行)并选择“删除”。

  3. 它将打开弹出窗口。选择“整行”并单击“确定”按钮

  4. 因此,无论您的代码是什么,您必须加载Excel数据,它只会读取那些有数据的行。

答案 3 :(得分:-1)

这不是错误。 “空”电子表格仍包含大量空单元格。 Excel通常有65536行和256个coloumns。