3

PHPExcel ライブラリを使用して、多くのワークシートを含む Excel ファイルを読み取り、処理を実行しています。これで、各ワークシートをループしても問題ありません。ただし、各ワークシートのインデックスを抽出して印刷したいのですが、これを行う方法がわかりません。確かに、私は自分のカウンターを作ることができます。しかし、getWorksheetIterator() メソッドを備えた組み込みメソッドが必要ですよね?

つまり、現在のワークシート イテレータを抽出するにはどうすればよいでしょうか。

助けてくれてありがとう。

これは、ドキュメントのループの例です。参照用に、worksheetiterator メソッドを含めることでわずかに変更されています。

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

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

$CurrentWorkSheetIndex = 0; 

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    echo 'WorkSheet' . $CurrentWorkSheetIndex++ . "\n";
    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";
}
?>
4

2 に答える 2

3

WorksheetIterator は各ワークシートを順番にループするため、最初はインデックス 0、2 番目はインデックス 1、3 番目はインデックス 2 のようになります。

したがって、イテレータのループごとに $CurrentWorkSheetIndex をインクリメントします。

$CurrentWorkSheetIndex = 0;   

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    $index = $CurrentWorkSheetIndex;
    ....
    $CurrentWorkSheetIndex++;
}

または、Iterator の key() メソッドを使用します。

$wsIterator = $objPHPExcelR->getWorksheetIterator();
foreach($wsIterator as $worksheet) {
    $index = $wsIterator->key();
    ....
}
于 2012-07-24T20:41:59.677 に答える
3

私は自分の質問に対する答えを見つけました。

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
    echo 'Worksheet number - ', $objPHPExcel->getIndex($worksheet) , PHP_EOL;

    // rest of code above
}
于 2012-07-24T20:42:02.567 に答える