【PHPExcel】シートをコピーして追加する

前の記事とかで紹介していたPHPExcel。今のバージョンは1.6.5

Excelでテンプレートを用意しといて、件数が多くなった場合に現在のシートをコピーして別シートに追加しようと、その方法を調査したときのメモ。

サンプルコード。

$objSheet = $objPHPExcel->getActiveSheet();
$objSheet_copy = $objSheet->copy();
$objSheet_copy->setTitle("page2");
$objPHPExcel->addExternalSheet($objSheet_copy);

Google先生に聞いてみてもサンプルコードがなかったので、ソースを解析してこの方法を発見。

コピーしたシートに移動する場合は

$objSheet = $objPHPExcel->getSheetByName("page2");

$objSheet = $objPHPExcel->getSheet(1);

を利用する。

 

<2010/06/08 追記>

バージョン1.7.3にバグがあってaddExternalSheetが動かない。普通にaddSheetをやれば大丈夫っぽい。

$objSource = $this->sheet->copy();
$objSource->setTitle('source');
$objSource = $this->excel->addSheet($objSource, 0);
//コピー元は隠す
$objSource->setSheetState(PHPExcel_Worksheet::SHEETSTATE_HIDDEN);