2011.
12.
04
22:23:13
この記事は「PHP、PHPExcelでExcel出力(ファイル保存)」の内容を
理解していることを前提に書いていますので、
よく分からん方はそちらからご覧下さいm(__)m
ついでに「PHP、PHPExcelでExcel出力(ファイルダウンロード)」も
先に読んでいただけるとサンプルが理解しやすいと思います。
さて、「PHP、PHPExcelでExcel出力(ファイル保存)」と
「PHP、PHPExcelでExcel出力(ファイルダウンロード)」で
PHPでのExcelファイルダウンロードの方法を書いた訳ですが、
一からExcelファイル作るのって面倒じゃないですか。
やっぱりあらかじめテンプレートファイルを用意しておいて
それをベースにちょっと値を埋めて出力したりしたいですよね。
と言う訳でサンプルφ(--)
<?php
//ライブラリ読み込み
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';
// // PHPExcelオブジェクトを生成する
// $book = new PHPExcel();
//テンプレート読み込み
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
//シート設定
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
$sheet->setTitle('sheet name'); //シート名指定
// セルに値を入れる
$sheet->setCellValue('A1', 'hoge');
$sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');
// Excel2003形式で出力する
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="o.xls"');
header('Cache-Control: max-age=0');
$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
$writer->save('php://output');
?>
えっ?やっぱり前の記事と殆ど同じじゃねーか!ですって(--?
わーはっは、ばれちゃーしょうがない(^◇^;
違うのは
//テンプレート読み込み
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
の部分だけですね、ハイ。
今までは空のExcel用オブジェクトを作成していましたが、
代わりに既存のExcelを読み込んでいるのですよ。
ほんでもってそれに対して値を埋めたりしているだけです。
ちなみに
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
はExcel97-2003形式(.xls)のファイルを読み込みです。
"Excel5"の部分がExcel97-2003形式(.xls)ねーって意味。
Excel2007形式(.xlsx)を読み込みたい場合はここを"Excel2007"に変えて
出力ファイルの拡張子を「.xlsx」に変えて
$filepath = "i.xlsx";
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
とかすればOKです。
あっ、しまった。
Excelの読み込みは次の記事で書こうと思ってたのに<( ̄◇ ̄;)>
理解していることを前提に書いていますので、
よく分からん方はそちらからご覧下さいm(__)m
ついでに「PHP、PHPExcelでExcel出力(ファイルダウンロード)」も
先に読んでいただけるとサンプルが理解しやすいと思います。
さて、「PHP、PHPExcelでExcel出力(ファイル保存)」と
「PHP、PHPExcelでExcel出力(ファイルダウンロード)」で
PHPでのExcelファイルダウンロードの方法を書いた訳ですが、
一からExcelファイル作るのって面倒じゃないですか。
やっぱりあらかじめテンプレートファイルを用意しておいて
それをベースにちょっと値を埋めて出力したりしたいですよね。
と言う訳でサンプルφ(--)
<?php
//ライブラリ読み込み
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';
// // PHPExcelオブジェクトを生成する
// $book = new PHPExcel();
//テンプレート読み込み
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
//シート設定
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
$sheet->setTitle('sheet name'); //シート名指定
// セルに値を入れる
$sheet->setCellValue('A1', 'hoge');
$sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');
// Excel2003形式で出力する
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="o.xls"');
header('Cache-Control: max-age=0');
$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
$writer->save('php://output');
?>
えっ?やっぱり前の記事と殆ど同じじゃねーか!ですって(--?
わーはっは、ばれちゃーしょうがない(^◇^;
違うのは
//テンプレート読み込み
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
の部分だけですね、ハイ。
今までは空のExcel用オブジェクトを作成していましたが、
代わりに既存のExcelを読み込んでいるのですよ。
ほんでもってそれに対して値を埋めたりしているだけです。
ちなみに
$filepath = "i.xls";
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$book = $objReader->load($filepath);
はExcel97-2003形式(.xls)のファイルを読み込みです。
"Excel5"の部分がExcel97-2003形式(.xls)ねーって意味。
Excel2007形式(.xlsx)を読み込みたい場合はここを"Excel2007"に変えて
出力ファイルの拡張子を「.xlsx」に変えて
$filepath = "i.xlsx";
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
とかすればOKです。
あっ、しまった。
Excelの読み込みは次の記事で書こうと思ってたのに<( ̄◇ ̄;)>