研究ノート 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
© Copyright 2024 Paperzz