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