PHPExcel による Excel ファイルの読み込み

研究ノート
PHPExcel による Excel ファイルの読み込み
岩田 員典 (愛知大学経営学部)
1.はじめに
PHP は 動 的 に HTML デ ー タ を 生 成 す る
こ と に よ っ て, 動 的 な Web ペ ー ジ を 実
本学の新入生向けの授業である情報
現することを主な目的としている。PHP
リ テ ラ シ ー 入 門・ 応 用 で は, 学 生 が
といった場合にはプログラミング言語か
Word や Excel の 多 数 の 問 題 に 取 り 組 め
そ の 言 語 プ ロ セ ッ サ を 指 す。PHP は ス
るように自動採点システムを独自に構
クリプト言語であり,サーバサイドで動
築・ 運 用 し て い る 1),2)。 論 文 1) に お い
作するアプリケーションの開発に用い
て は Excel の 採 点 に は Perl の ラ イ ブ ラ
ら れ る。 通 常 は,Web サ ー バ 上 で 動 作
3)
を
し, サ ー バ 上 で PHP ス ク リ プ ト の 文 書
利用していた。このライブラリは Office
が要求されるたびに,そのスクリプトが
2003 ま で 用 い ら れ て い た バ イ ナ リ 形 式
実行される。そして,その結果をウェブ
の Excel ファイルを読み込むための物で
ブラウザに対して送信することで動的な
あ る。Office 2007 以 降 は フ ァ イ ル 形 式
Web ページを実現している。C 言語に似
リ で あ る Spreadsheet::ParseExcel
4)
に変更されたた
た平易な文法のため幅広く用いられてい
め, 論 文 2) で は PHP の ラ イ ブ ラ リ で あ
る。また,本稿で取り上げる PHPExcel の
る PHPExcel 5) を用いることになった a 。
ような多くのフレームワークやライブラ
そこで,本稿では PHPExcel を利用した
リが存在し,様々な Web アプリケーショ
Excel ファイルの読み込みについて解説
ンの開発が PHP によって容易になる。
が Office Open XML
する。
2.1 PHP のインストール
2.PHP とは
PHPExcel を利用するには,PHP をイ
正 式 な 名 称 は PHP: Hypertext
ンストールする必要がある。
Preprocessor 6)であり,通常 PHP と省略
される。PHP の部分は“Personal Home
2.1.1 Windows へのインストール
Page”に由来していると言われている。
a
Office Open XML に対応している Perl のラ
イブラリとしては Spreadsheet-XLSX がある
愛知大学情報メディアセンター
Window 版のバイナリを参考文献 7) で
示 し た URL か ら ダ ウ ン ロ ー ド す る こ と
- 73 -
vol.26, No.1, 2016
が出来る。以下のように大きく分けて 4
る。2015 年 10 月 の 時 点 で は Mac OS X
種類存在する zip ファイルから適切な物
10.11.1(El Capitan)には PHP 5.5.29 が
をダウンロードする。
インストールされている。
◦ 32bit(x86)Non Thread Safe
その他の Unix システムでは,OS 毎の
◦ 32bit(x86)Thread Safe
パッケージマネージャーを利用するか
◦ 64bit(x64)Non Thread Safe
ソースファイルをダウンロードしてイン
◦ 64bit(x64)Thread Safe
ストールすることになる。詳細は参考文
ビ ッ ト(bit) 数 は 環 境 に あ わ せ て 選
献
6)
の Documentation に書かれている。
択 す る。 そ し て,Non Thread Safe か
また,サーバサイドで利用する場合に
Thread Safe か は Web サ ー バ の 種 類 と
は Apache 等 の Web サ ー バ の 設 定 も 必
Version に よ る。Apache2 以 降 な ら ば
要であり,その際には同じく参考文献 6)
Thread Safe を 利 用 し,IIS や Apache1
に設定方法が記載されている。
ならば Non Thread Safe を利用する。た
だし,本稿で説明する PHPExcel を利用
3.PHPExcel の利用方法
するだけならビット数があっていればよ
3.1 PHPExcel のインストール
い。
ダウンロードした zip ファイルを好み
の場所に展開する。展開したフォルダに
PHPExcel の最新版を参考文献 5) に示
存在する php.exe をコマンドプロンプト
し た URL か ら DOWNLOADS を 選 択 し
等で実行できれば,そこにパスを通すこ
ダウンロードする。本稿執筆時には 1.8.0
とでインストールは完了する。尚,環境
(2014/3/2 リ リ ー ス ) が 最 新 版 で あ る。
によっては実行に「Visual Studio 2012
マニュアルが必要ない場合は Code only
更 新 プ ロ グ ラ ム 4 の Visual C++ 再 頒 布
可能パッケージ」などのライブラリが必
要となることがある。
2.1.2 その他の OS へのインストール
Mac OS X 10.0.0 以降では標準でイン
ス ト ー ル さ れ て い る の で, 新 し い バ ー
ジョンを利用するのでなければターミナ
ルなどからすぐに利用することが出来
愛知大学情報メディアセンター
- 74 -
図 1 PHPExcel のダウンロード
vol.26, No.1, 2016
をダウンロードするとファイルサイズが
3.2 Excel ファイルの読み込み
小さく,時間がかからずに済む(図 1)。
ダウンロードしたファイルは zip で圧
本節では Excel を読み込むためのプロ
縮 さ れ て い る た め 展 開 す る。 展 開 す る
グラムについて説明をする。全てのプロ
と,Code only の 場 合 は デ ィ レ ク ト リ
グラムを一カ所に記載すると長いため分
Classes と 3 つ の フ ァ イ ル が 含 ま れ て い
割して説明する。尚,プログラムは全て
る。PHPExcel の実行に必要なファイル
タグ“<?php”,”?>”に囲まれているも
は Classes 内のファイルのみなので,プ
のとする。
ログラムを作成するディレクトリにこ
のディレクトリを移動する。ここでは,
3.2.1 読み込みの準備と読み込み
testPHPExcel と 名 付 け た デ ィ レ ク ト リ
で作業を行う(図 2)。
図 3 に Excel フ ァ イ ル を 読 み 込 む た め
の基本的な設定と読み込み方法を示す。
1 行目はライブラリを読み込むための
パスの設定を行う。Web アプリケーショ
ンとしてサーバサイドで利用する場合
も,同様の設定を利用する。
2 行 目 は Time Zone の 設 定 で あ り,
PHP の設定状況によっては必要ない。
3~4 行目が利用するライブラリの読み
込みとなる。1 行目で設定したパスに対
しての相対的な参照となる。
5 行 目 で フ ァ イ ル の 形 式 を 指 定 し て,
図 2 PHPExcel のインストール
ファイルを読み込むためのインスタンス
図 3 パスの設定と Excel ファイルの読み込み
愛知大学情報メディアセンター
- 75 -
vol.26, No.1, 2016
図 4 タイトルとシート名の取得
図 5 セル内のデータの取得
を取り出す。
10 行目ではシートの枚数を取得し,11
6 行目はグラフデータを読み出すこと
を指定している。
行目から 15 行目までの”for”文によっ
て全てのシート名の取得・表示を行って
7 行目でファイル”readTest.xlsx”を
いる。
読み込む。
3.2.3 セル内のデータの取得
3.2.2 プロパティとシートの確認
図 4 までの操作でシートの情報を取得
Excel ファイルのプロパティとシート
できる。次に指定したシートにおいてセ
数,シート名の確認方法は図 4 の通りで
ル内のデータを取得する方法を図 5 に示
ある。
す。
8 行目でプロパティ内のタイトルを取
出し,9 行目で表示している。
愛知大学情報メディアセンター
16 行目で情報を取得したいシートを指
定している。シートの番号は先頭から 0,
- 76 -
vol.26, No.1, 2016
図 6 グラフ情報の取得
1,2,…となる。17 行目でそのシートを
取り出す。「標準」の場合は“General”
取り出している。
が取得される。
18 行目ではシート内のデータが入って
いるセルの一覧を取得している。
24 行目で各セルに対する結果を出力し
ている。
19 行 目 か ら 25 行 目 で 各 セ ル に 対 し て
3.2.4 グラフ情報の取得
データの取出しを行っている。
21 行 目 で セ ル に 入 力 さ れ て い る 値・
式 な ど を 取 り 出 し て い る。22 行 目 で は
最後にグラフに関する情報をどのよう
セルに入力された式を計算した結果が取
に取得するかについて説明する(図 6)。
得できる。例えば,セル A5 に”= sum
26 行目でグラフデータの集合を取得し
(A2:A4)”と入力されていた場合に,21
行目では“= sum(A2:A4)”が取り出さ
れ,22 行目ではセル A2 から A4 の値を合
計した結果が得られる。
28 行 目 か ら 45 行 目 に か け て 各 グ ラ フ
について情報を取り出している。
29 行目でグラフを指定し,30 行目でグ
23 行目ではセルに表示する際の書式を
愛知大学情報メディアセンター
ている。27 行目はグラフの数を得る。
ラフの種類を出力している。グラフの種
- 77 -
vol.26, No.1, 2016
類は以下のように出力される。
◦棒グラフ,横棒グラフ:barChart
◦折れ線グラフ:lineChart
◦円グラフ:pieChart
◦面グラフ:areaChart
◦散布図:scatterChart
31 行 目 か ら 44 行 目 で は グ ラ フ 作 成 に
使われているデータの場所と値を取得し
ている。31 行目でデータの参照範囲を全
て取出し,32 行目でそれがいくつあるか
を計測している。
33 行 目 か ら 42 行 目 に か け て 各 参 照 に
図 7 対象の Excel ファイル
対して調べている。34 行目でどの範囲の
データを参照しているか出力する。36 行
目 か ら 43 行 目 に か け て そ の 参 照 に よ る
値を取り出している。具体的には以下の
ような情報を取り出すことになる。
34 行目:'Sheet1'!$A$2:$A$4
43 行目:2,8,4
3.3 実行例
図 8 実行例
図 7 で 示 し た Excel フ ァ イ ル に 対 し て
図 3~図 6 のプログラムを実行する。セル
タイトルが出力されている。次に現在参
の A2,A3,A4 には数値データが入って
照しているシート名が表示される。その
いる。A5 には“= SUM(A2:A4)”が入
後,各セル内の情報が取り出され,最後
力されており,この 3 つのセルの合計値
の 3 行はグラフに関する情報となってい
が表示される。また,折れ線グラフもこ
る。セル A5 の情報については,前述の
の 3 つの値に対して作成をした。プロパ
ように最初に入力された式が得られ,そ
ティ内のタイトルは「PHPExcel テスト」
の次に計算結果が得られる。このように
としている。実行例を図 8 に示す。
PHPExcel を 使 う こ と で Excel フ ァ イ ル
実行例において最初にプロパティ内の
愛知大学情報メディアセンター
からいろいろな情報を抜き出すことが出
- 78 -
vol.26, No.1, 2016
来る。
3)SpreadSheet-ParseExcel,
http://search.cpan.org/dist/
4.まとめ
Spreadsheet-ParseExcel/lib/
Spreadsheet/ParseExcel.pm
本 稿 で は PHPExcel の 基 本 的 な 使 い
方の説明をした。PHP のインストール,
4)Standard ECMA-376 Office Open XML
File Formats,
PHPExcel のインストールの仕方も示し
http://www.ecma-international.org/
た。そして,Excel ファイルを読み込む
publications/standards/Ecma-376.htm
ためのサンプルプログラムを記載し,そ
の実行例を示した。
(2006-2012).
5)PHPExcel,
PHPExcel は Excel フ ァ イ ル を 読 み 込
https://phpexcel.codeplex.com
むだけでなく,新規作成・編集をプログ
6)PHP,
ラムから行うことが出来る。次稿ではそ
http://php.net
の方法について説明をしたい。また,今
7)PHP For Windows,
回はコマンドラインでの実行方法につい
http://windows.php.net/download
て示したが,Web アプリケーションとし
てサーバサイドで実行する場合の設定等
についても述べていきたい。
参考文献
1)岩田員典,功刀由紀子,齋藤毅,谷口正明,
長谷部勝也,松井吉光,古川邦之:Excel,
Word 自 動 採 点 シ ス テ ム HITs の 構 築 と 運
用,愛知大学 情報メディアセンター紀要
「COM」,Vol.20,No.1 第 35 号,pp.11-23
(2010).
2)岩田員典,松井吉光,長谷部勝也,谷口
正明,池森均,梅垣敦紀,齋藤毅,澤田貴
行,土橋喜,中尾浩,西本寛,古川 邦之,
毛利元昭:情報リテラシーのための Word,
Excel 自動採点システムの構築と運用,教
育改革 ICT 戦略大会 pp.294-295(2013).
愛知大学情報メディアセンター
- 79 -
vol.26, No.1, 2016