PHPExcelで、PHPからExcelを作成・操作する

phpexcel_logo

PHPからExcelを操作したいことがありましたので、PHPExcelを使ってみました。

現バージョン(1.7.8)を使った簡単な導入方法を紹介します。
いろんなところでも紹介されていますが、備忘録もかねて。

phpexcel001まずは、公式サイトから最新版の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を操作できますね。

3 Thoughts on “PHPExcelで、PHPからExcelを作成・操作する

  1. Pingback: Bookmarks for 6月 26th through 6月 28th

  2. Pingback: Excelファイルを出力する「PHPExcel」をCakePHP2.3.xで使う方法。 | Wataame Frog

  3. Pingback: PHPでExcelを編集する | 健巳創作

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

投稿ナビゲーション