5

我对我拥有的一些文件的 PHPExcel 行为感到有些困惑。这些文件包含大约。3000 行数据,但根据 PHPExcel,使用的最后一行是 65535。我尝试从文件中剪切几行并将它们粘贴到一个新文件中,但无济于事。不管是Excel5还是Excel2007格式,结果都是一样的。

有什么想法可以在这里找到错误吗?

代码:

    $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

4 回答 4

6

所需要的只是一个空白单元格,最后一列/行可能比您预期的要高很多。甚至打印布局或样式也可以伪造存储的最高值。在 MS Excel 中打开文件并按 Ctrl-End,它将带您到 Excel 识别的最后一个单元格。

除了 getHighestRow() 和 getHighestColum() 之外,还有一个(较慢的)getHighestDataRow() 和 getHighestDataColumn() 方法,用于识别实际包含单元格数据的最高行和最高列。

于 2012-06-19T12:26:21.063 回答
1
$objPHPExcel->setActiveSheetIndex(0)->getHighestRow();

或者

$objPHPExcel->setActiveSheetIndex(0)->calculateWorksheetDimension();

它将范围作为字符串返回,例如 A1:AC2048

尽管其中包含尾随的空白行和列。

或者您可以使用迭代器遍历现有的行和列,以获取工作表使用范围内的每个单元格。有关示例,请参阅生产发行版中的 /Tests/28iterator.php。迭代器可以设置为忽略空格。

资源:

如何找出使用 PHPExcel 从 Excel 文件中读取的行数和列数?

于 2012-06-19T09:14:18.970 回答
1

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

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

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

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

因此,无论您的代码必须加载 excel 数据,它都只会读取那些有数据的行。

于 2017-09-20T20:31:23.463 回答
-1

这没有错误。“空”电子表格仍然包含许多空单元格。Excel 通常有 65536 行和 256 列。

于 2012-06-19T09:08:13.283 回答