35

Excel ワークシートの列に基づくループを実行するにはどうすればよいですか? WorksheetIterator、RowIterator、CellIterator を見つけました (そして使用しました) が、列については何もありませんでした。

4

7 に答える 7

93

ColumnIterator はないので、手動で行う必要があります。

特定のワークシートの場合:

列の行をループするには:

$column = 'A';
$lastRow = $worksheet->getHighestRow();
for ($row = 1; $row <= $lastRow; $row++) {
    $cell = $worksheet->getCell($column.$row);
    //  Do what you want with the cell
}

行の列をループするには、PHP の Perls スタイルの文字をインクリメントする機能を利用できます。

$row = 1;
$lastColumn = $worksheet->getHighestColumn();
$lastColumn++;
for ($column = 'A'; $column != $lastColumn; $column++) {
    $cell = $worksheet->getCell($column.$row);
    //  Do what you want with the cell
}

ループの最後の列をテストするために列の文字を比較する場合、単純に < または <= を使用できないことに注意してください。 != 比較。列の最大値をインクリメントして、終点を過ぎた最初の列 ID を示します。

使用することもできます

$worksheet->cellExists($column.$row);

getCell() を使用して (または使用せずに) セルにアクセスする前にセルの存在をテストして、反復子 getIterateOnlyExistingCells() の動作をエミュレートするループ内

イテレータは実際にはかなり遅いので、これらの単純なループはイテレータを使用するよりも高速であることがわかるでしょう。

更新(2015-05-06)

PHPExcel バージョン 1.8.1 では、新しい列反復子が導入されました。行と列のイテレータを使用すると、反復する行または列の範囲を指定することもでき、ループするときに prev() と next() を使用できます。

于 2011-04-07T08:38:22.973 に答える
1

これを試して!仕事!

$limit = 10000;
$value='sua mensagem'
for($i=0,$j='A';$i<$limit;$i++,$j++) {
    $objPHPExcel->setActiveSheetIndex(0)
  ->setCellValue($j.$i, $value);
}

印刷したいものを $value に設定します。

于 2014-07-20T13:51:26.703 に答える
1

これは、最後のメッセージの getColumnLetter メソッドの修正です。列の数に関係なく、列の「文字」を取得できます。

function getColumnLetter( $number ){
    $prefix = '';
    $suffix = '';
    $prefNum = intval( $number/26 );
    if( $number > 25 ){
        $prefix = getColumnLetter( $prefNum - 1 );
    }
    $suffix = chr( fmod( $number, 26 )+65 );
    return $prefix.$suffix;
}
于 2017-04-27T18:59:27.133 に答える
0

この再帰的なメソッドは、「A」から「ZZZZZZZZZ...」まで、列の数に関係なく、列の「文字」を取得できるように設計されています。

function getColumnLetter( $number )
{
    $prefix = '';
    $suffix = '';
    $prefNum = intval( $number/26 );
    if( $prefNum > 25 )
    {
        $prefix = getColumnLetter( $prefNum );
    }
    $suffix = chr( fmod( $number, 26 )+65 );
    return $prefix.$suffix;
}

したがって、PHP配列の列をインデックス番号でループし、それを文字列に変換して、「setCellValue」などのPHPExcelメソッドで使用できます...しかし、上記のソリューションは、使用できれば確実に高速です!

于 2016-06-22T15:26:01.720 に答える