ここでは、PHPExcel を使った基本的なシート操作のサンプルコードを記載しています。
スポンサーリンク
- シートの新規作成
- シートの削除
- シート名の設定
- シートの非表示
- シートのコピー
の操作を行うサンプルになります。詳細はコメントを参照ください。
シートの新規作成・削除・名前変更・非表示
include_once 'PHPExcel.php'; include_once 'PHPExcel/IOFactory.php'; // PHPExcelオブジェクトを生成する // この時点で「WorkSheet」というシート名でシートが作成されている $excel = new PHPExcel(); $sheet = $excel->getActiveSheet(); // シートを追加する $newSheet1 = $excel->createSheet(); // シート名:Worksheet 1 $newSheet2 = $excel->createSheet(); // シート名:Worksheet 2 $newSheet3 = $excel->createSheet(); // シート名:Worksheet 3 $newSheet3->setTitle('ワークシート3'); // シート名を変更 // WorkSheet 2 のインデックスを取得する $delIndex = $excel->getIndex($newSheet2); // シートを削除する(インデックスでのみ削除可能) $excel->removeSheetByIndex($delIndex); // Worksheet 1 を非表示にする $newSheet1->setSheetState(PHPExcel_Worksheet::SHEETSTATE_HIDDEN); // 再表示するに場合は、PHPExcel_Worksheet::SHEETSTATE_VISIBLE を設定する // ワークシート3 を非表示にする $newSheet3->setSheetState(PHPExcel_Worksheet::SHEETSTATE_VERYHIDDEN); /* * SHEETSTATE_VERYHIDDEN は VBA では以下のコードに相当し、 * ユーザーが UI からシートの再表示を行っても表示されることはない。 * * [相当する VBA コード] * Worksheets("ワークシート3").Visible = xlVeryHidden * * SHEETSTATE_HIDDEN の場合は、ユーザーによる再表示が可能となる。 * */ // Excel 97-2003 形式で作成し、ブラウザに出力する header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="excel97-2003.xls"'); header('Cache-Control: max-age=0'); $writer = PHPExcel_IOFactory::createWriter($excel, "Excel5"); $writer->save('php://output');
シートのコピー
PHPExcel でシートをコピーするサンプルです。注意点としては必ずシート名を重複なく設定する必要があることです。 Excel 2000 での確認結果では、シート名を変更しなかった場合に Excel ファイルの作成はおよびダウンロード後のファイルのオープンまではできますが Excel の終了時や保存時に落ちてしまいます。
古い情報ですいません。
<?php include_once 'PHPExcel.php'; include_once 'PHPExcel/IOFactory.php'; // テンプレートファイルのパス $template_path = 'path/to/copysheet.xls'; // テンプレートファイルをロード $excel = PHPExcel_IOFactory::load($template_path); // 先頭のシートを最後尾にコピーする $firstSheet = $excel->getSheet(0); $copied = $firstSheet->copy(); // (重要!!)シート名を変更する $copied->setTitle("copy1"); // 第2パラメータが null(省略時含む)の場合は最後尾に追加される $excel->addSheet($copied, null); // 指定したシートを先頭にコピーする $sheet2 = $excel->getSheetByName('sheet2'); $copied2 = $sheet2->copy(); $copied2->setTitle("copy2"); // 先頭にシートを追加 $excel->addSheet($copied2, 0); // Excel 97-2003 形式で作成し、ブラウザに出力する header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="excel97-2003.xls"'); header('Cache-Control: max-age=0'); $writer = PHPExcel_IOFactory::createWriter($excel, "Excel5"); $writer->save('php://output');