2011.
12.
04
21:49:19
ちょっくらPHPでExcelファイルの読み書きが必要になりましてね。
調べてみましたよっと。
要件はExcel97-2003形式(.xls)とExcel2007形式(.xlsx)の
両方読み書きできること。
結果、PHPExcelさんを採用ヾ(´∀`)ノ
っつ―わけで前準備ですが・・・
1.ここの右の方にあるDownloadからダウンロード
※私が取得した時点のバージョンは1.7.6でした。
2.解凍すると色々入っているけど「Classes/」フォルダがライブラリ本体。
こいつを適当なところに置く。
これでOK。
さて、では実際に出力してみましょう(--)b
ごちゃごちゃ説明するより見た方が早いですよね。
ほれ、サンプルφ(--)
<?php
//ライブラリ読み込み
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';
// PHPExcelオブジェクトを生成する
$book = new PHPExcel();
//シート設定
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
$sheet->setTitle('sheet name'); //シート名指定
// セルに値を入れる
$sheet->setCellValue('A1', 'hoge');
$sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');
// Excel2003形式で保存する
$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
$writer->save("o.xls"); //ファイル名を指定して保存
?>
上から順に説明すると、まずさっき解凍したライブラリをrequireしまする。
ほんでExcel操作用のオブジェクトを作成して、
そっからシートのオブジェクトを抜き出して値を入れてファイル名を指定して保存。
ExcelVBA触ったことがある人なら見覚えあるんじゃないですかね。
ちなみに
$sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');
で日本語を入力していますが、文字コードがUTF-8じゃないと日本語消えちゃいます。
PHPファイル自体をUTF-8で作成するかmb_convert_encoding()かまして下さい。
$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
$writer->save("o.xls"); //ファイル名を指定して保存
はExcel97-2003形式(.xls)で出力です。
"Excel5"の部分がExcel97-2003形式(.xls)ねーって意味。
Excel2007形式(.xlsx)で出力したい場合はここを"Excel2007"に変えて
出力ファイルの拡張子を「.xlsx」に変えて
$writer = PHPExcel_IOFactory::createWriter($book, "Excel2007");
$writer->save("o.xlsx"); //ファイル名を指定して保存
とかすればOKです。
調べてみましたよっと。
要件はExcel97-2003形式(.xls)とExcel2007形式(.xlsx)の
両方読み書きできること。
結果、PHPExcelさんを採用ヾ(´∀`)ノ
っつ―わけで前準備ですが・・・
1.ここの右の方にあるDownloadからダウンロード
※私が取得した時点のバージョンは1.7.6でした。
2.解凍すると色々入っているけど「Classes/」フォルダがライブラリ本体。
こいつを適当なところに置く。
これでOK。
さて、では実際に出力してみましょう(--)b
ごちゃごちゃ説明するより見た方が早いですよね。
ほれ、サンプルφ(--)
<?php
//ライブラリ読み込み
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';
// PHPExcelオブジェクトを生成する
$book = new PHPExcel();
//シート設定
$book->setActiveSheetIndex(0);
$sheet = $book->getActiveSheet();
$sheet->setTitle('sheet name'); //シート名指定
// セルに値を入れる
$sheet->setCellValue('A1', 'hoge');
$sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');
// Excel2003形式で保存する
$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
$writer->save("o.xls"); //ファイル名を指定して保存
?>
上から順に説明すると、まずさっき解凍したライブラリをrequireしまする。
ほんでExcel操作用のオブジェクトを作成して、
そっからシートのオブジェクトを抜き出して値を入れてファイル名を指定して保存。
ExcelVBA触ったことがある人なら見覚えあるんじゃないですかね。
ちなみに
$sheet->setCellValue('A2', 'あいうえおかきくけこさしすせそ');
で日本語を入力していますが、文字コードがUTF-8じゃないと日本語消えちゃいます。
PHPファイル自体をUTF-8で作成するかmb_convert_encoding()かまして下さい。
$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");
$writer->save("o.xls"); //ファイル名を指定して保存
はExcel97-2003形式(.xls)で出力です。
"Excel5"の部分がExcel97-2003形式(.xls)ねーって意味。
Excel2007形式(.xlsx)で出力したい場合はここを"Excel2007"に変えて
出力ファイルの拡張子を「.xlsx」に変えて
$writer = PHPExcel_IOFactory::createWriter($book, "Excel2007");
$writer->save("o.xlsx"); //ファイル名を指定して保存
とかすればOKです。