PHPからExcelを操作したいことがありましたので、PHPExcelを使ってみました。
現バージョン(1.7.8)を使った簡単な導入方法を紹介します。
いろんなところでも紹介されていますが、備忘録もかねて。
まずは、公式サイトから最新版のPHPExcelをダウンロードします。
ダウンロードしたzipファイルを解凍し、「Classes」ディレクトリを、利用するサイトディレクトリ以下に配置します。
たとえば、「htdocs」がルートディレクトリだった場合、その直下に配置すると「htdocs/Classes」となりますね。
それから、利用したいPHPファイルで「Classes」ディレクトリを読み込めるようにパスを通します。
set_include_path(get_include_path(). PATH_SEPARATOR .$_SERVER["DOCUMENT_ROOT"] . '/Classes/');
「get_include_path()」で取得した現在のパスに、「PATH_SEPARATOR」で区切って、「$_SERVER[“DOCUMENT_ROOT”] . ‘/Classes/’」を追加して、「set_include_path()」でセットし直しているんですね。
それから、ライブラリを読み込みます。
include_once 'PHPExcel.php'; include_once 'PHPExcel/IOFactory.php';
「Classes」ディレクトリ以下にある「PHPExcel.php」と「PHPExcel/IOFactory.php」をインクルードします。
ちなみに、2つめの「IOFactory.php」ですが、Excel2007形式(.xlsx)を扱う場合は、以下のようにしてもいいです。
include_once 'PHPExcel/Writer/Excel2007.php';
ここでちょっと気づいたんですが、色々な説明サイトでも、公式のスクリプトでも上記のように説明しているんですが、
Excelを読み込むのも書き込むのも「PHPExcel.php」だけインクルードしていれば、ちゃんと動きました。
PHPExcelの動きを追いかけていないので詳しいことはいえませんが、パスさえ通しておけば以下でも大丈夫なのかもしれませんね。
include_once 'PHPExcel.php';
そして、新規でExcelを作成する場合と既存のファイルを開く場合で処理がかわります。
// 新規作成の場合 $objPHPExcel = new PHPExcel(); // 既存ファイルの読み込みの場合 $objPHPExcel = PHPExcel_IOFactory::load("sample.xlsx"); // IOFactory.phpではなく、Excel2007.phpを利用する場合 // 新規作成の場合 $objPHPExcel = new PHPExcel(); // 既存ファイルの読み込みの場合 $objReader = new PHPExcel_Reader_Excel2007(); $objPHPExcel = $objReader->load("sample.xlsx");
これで、Excelファイルが扱えます。
次にシートを選択します。
// 0番目のシートをアクティブにする(シートは左から順に、0、1,2・・・) $objPHPExcel->setActiveSheetIndex(0); // アクティブにしたシートの情報を取得 $objSheet = $objPHPExcel->getActiveSheet();
そして、セルに値をセットします。
// セル「A1」に「タイトル」という文字を挿入 $objSheet->setCellValue("A1", "タイトル"); // セル「B2」に今日の日付を挿入 $objSheet->setCellValue("B2", date("Y/m/d")); // セル「C3」に計算結果を挿入 $objSheet->setCellValue("C3", 5000*5); // セル「D4」に変数同士の計算結果を挿入 $objSheet->setCellValue("D4", $price * $num);
あとは、セットした値を保存します。
// IOFactory.phpを利用する場合 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save("sample2.xlsx"); // Excel2007.phpを利用する場合 $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); $objWriter->save("sample2.xlsx");
これで、PHPからExcelファイルを操作できます。
これを利用すれば、前にやったHandsontableをインターフェイスにして、Excelを操作できますね。
Pingback: Bookmarks for 6月 26th through 6月 28th
Pingback: Excelファイルを出力する「PHPExcel」をCakePHP2.3.xで使う方法。 | Wataame Frog
Pingback: PHPでExcelを編集する | 健巳創作