使用PHPExcel循环工作表

use*_*236 19 php for-loop worksheet phpexcel

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

感谢您的任何帮助.

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

<?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";
?>
Run Code Online (Sandbox Code Playgroud)

jef*_*ind 16

我想你可以做到这一点.增加活动表直到没有任何剩余,然后对每个执行您想要的操作:

<?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++;

    }

    ...

?>
Run Code Online (Sandbox Code Playgroud)

  • if($ i <$ objPHPExcel-> getSheetCount() - 1)$ i ++; 否则打破; 在循环结束时添加它,因为它会让您找到不存在的最后一页的错误 (5认同)

Mar*_*ker 11

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

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


bil*_*oah 10

这是一个有用的函数,我用它来迭代工作表并为每个工作表返回一个单元格值数组,其中工作表标题为数组键:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)