首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PHPExcel遍历工作表

使用PHPExcel遍历工作表
EN

Stack Overflow用户
提问于 2012-07-24 01:02:56
回答 3查看 36.5K关注 0票数 19

我正在使用PHPExcel库读取一个Excel文件并对其执行处理。我想遍历每个工作表。我查看了文档,我所能找到的就是更改活动工作表索引或仅加载指定的工作表。如何遍历所有工作表?

谢谢你的帮助。

以下是文档的循环示例,以供参考:

代码语言:javascript
复制
<?php
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);

$objPHPExcel = $objReader->load("test.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();

echo '<table>' . "\n";
foreach ($objWorksheet->getRowIterator() as $row) {
  echo '<tr>' . "\n";

  $cellIterator = $row->getCellIterator();
  $cellIterator->setIterateOnlyExistingCells(false); // This loops all cells,
                                                     // even if it is not set.
                                                     // By default, only cells
                                                     // that are set will be
                                                     // iterated.
  foreach ($cellIterator as $cell) {
    echo '<td>' . $cell->getValue() . '</td>' . "\n";
  }

  echo '</tr>' . "\n";
}
echo '</table>' . "\n";
?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-24 01:09:19

您正在使用迭代器。您看过/Tests目录中迭代器的代码示例了吗?如果是这样,您可能已经看到了对WorksheetIterator的引用

或者,PHPExcel对象的getAllSheets()方法返回一个工作表数组,这允许您使用foreach循环

票数 12
EN

Stack Overflow用户

发布于 2012-07-24 01:12:30

我想你可以做到的。增加活动工作表,直到没有剩余的工作表,然后对每个工作表执行您想要的操作:

代码语言:javascript
复制
<?php

    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objReader->setReadDataOnly(true);

    $objPHPExcel = $objReader->load("test.xlsx");

    $i = 0;
    while ($objPHPExcel->setActiveSheetIndex($i)){

        $objWorksheet = $objPHPExcel->getActiveSheet();
        //now do whatever you want with the active sheet
        ...
        $i++;

    }

    ...

?>
票数 16
EN

Stack Overflow用户

发布于 2015-11-18 23:16:09

下面是一个有用的函数,用于迭代工作表并返回每个工作表的单元格值的数组,并将工作表标题作为数组键:

代码语言:javascript
复制
function getSheets($fileName) {
    try {
        $fileType = PHPExcel_IOFactory::identify($fileName);
        $objReader = PHPExcel_IOFactory::createReader($fileType);
        $objPHPExcel = $objReader->load($fileName);
        $sheets = [];
        foreach ($objPHPExcel->getAllSheets() as $sheet) {
            $sheets[$sheet->getTitle()] = $sheet->toArray();
        }
        return $sheets;
    } catch (Exception $e) {
         die($e->getMessage());
    }
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11617077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档