Skip to content

Instantly share code, notes, and snippets.

@kurosuke
Created May 8, 2012 06:43
Show Gist options
  • Save kurosuke/2633082 to your computer and use it in GitHub Desktop.
Save kurosuke/2633082 to your computer and use it in GitHub Desktop.
excel workbooks combine with PHPExcel
<?php
//
// 複数のExcel Workbooks を 1つに結合
// combine excel Workbooks
// (merge excel Worksheets to one Workbooks)
//
// 結合元のexcelファイル名列
$org_books = array('sample1.xls', 'sample2.xls', 'sample3.xls');
$incpath = ini_get('include_path');
ini_set('include_path', $incpath . ":" . "./tmp/Classes");
// PHPExcelクラスを呼び出し
require_once 'PHPExcel.php';
require_once 'PHPExcel/Writer/Excel2007.php';
// 新しいExcel Workbooks を作成
$new_xl = new PHPExcel();
// 結合元のファイルを読み込む
for ($n = 0; $n < count($org_books); $n++) {
$workbook_file = $org_books[$n];
// excel95形式(.xls) でexcelファイルを読む
$reader = PHPExcel_IOFactory::createReader('Excel5');
$xl = $reader->load($workbook_file);
// 結合元のファイルは1 sheetだと仮定
$firstSheet = $xl->getSheet(0);
// excelファイル名からWorksheet名を設定
$workbook_name = substr($workbook_file, 0, -4);
$firstSheet->setTitle($workbook_name);
// 結合元のsheet を新しいWorkbooks に追加
$new_xl->addExternalSheet($firstSheet);
}
// 最初の sheet は空(ゴミ)なので削除
$new_xl->removeSheetByIndex(0);
// 新しいWorkbooksを保存
$writer = PHPExcel_IOFactory::createWriter($new_xl, 'Excel5');
$writer->save('new.xls');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment