Play + Java でexcelモジュールを使ってxlsファイルを作ってみよう

このエントリーをはてなブックマークに追加
ご無沙汰しております。
R&D部のHealerです。

大雪で各地混乱してますね。
家の外では子供達が楽しそうに雪遊びをしていて微笑ましいですが、
私は引きこもってこのブログを書いています。(笑)

さて、今回は表題の通り、PlayFramework + Java でxlsxファイルの作り方になります。

今まで私が関わってきた案件では、
必ずと言っていいほどお客様への表組みのレポートの提出が求められます。
レポート内容はさまざまなんですが、大別して2種類のファイル形式で提出しています。

  • csv
    • 言わずと知れたComma-Separated Valueの略。
    • カンマ区切りのテキストとしてでレコードを作成出来るので作成は非常に楽。
    • 単純なテキストファイルなので罫線や着色などの装飾は一切なし
    • 文字コードの取り扱いに注意が必要。
  • xls(xlsx)
    • Microsoft Excelで使用されるファイル形式
    • 表組みのファイル形式ではデファクトスタンダード。
    • 豊富な装飾が可能
csvファイルは非常に作成が楽なので、
ファイルを作る側としては基本的にはこちらを推しますが、
やはり、装飾付きで見やすいものにして欲しい、
お客様の社内で提出できるフォーマットにして欲しい
という要望もあり、xls(xlsx)ファイルでの提出を求められます。

そこで、PlayFrameworkとJavaを使ってxlsファイルを作って見ることにします。
JavaだとPOIなんかを始め、たくさんのモジュールがありますが、
Playを使うということでせっかくなのでexcelモジュールを試してみることにします。

1.excelモジュールをインストール
PlayとJavaはすでに用意できているという前提で進めます。
excelモジュールのページはこちら
インストールは簡単で、play installのみ。

個別にダウンロードしてきたりする必要はありません。
versionはxlsxファイルを扱いたい場合は末尾に「x」がついているものを指定します。
モジュールのサイズが結構違うので、要件に合ったものを選んで下さい。

dependencies.ymlも以下のように設定します。
依存性の解決をしましょう。

これで準備完了です。

2.テンプレートを用意
テンプレートとして使用するxlsファイルを用意します。
下記のような構成とします。


住所 電話番号 メールアドレス
<jx:forEach items="${persons}" var="person">
${person.name1} ${person.name2} ${person.address} ${person.phone} ${person.mail}
</jx:forEach>

${変数名}で変数内容がセットされます。
${Mapオブジェクト.変数名}Mapオブジェクトも使用出来ます。
jx:forEachタグを使うと繰り返しにも対応できます。
上の構成ではpersonsというMapオブジェクトのListを用意して、
jx:forEachタグで繰り返しを行います。
itemsにListオブジェクトの変数${persons}を指定、
varに繰り返しの中で使用するMapオブジェクトの名前を指定します。

3.テンプレートを読み込んでxlsファイルを作成
Controller配下ににmakeExcelというメソッドを作成します。
メソッドの内容はテンプレートにセットする各オブジェクトを用意して、renderするシンプルなものです。
これでmakeExcelにアクセスするとroster.xlsというファイルが作成されるようになります。

作成されたファイルはテンプレートの指定通り、下記のような内容となります。

住所電話番号メールアドレス
鈴木一朗東京都00-0000-0000xxxxxxxxxx@xxxx.xxx
大村三郎千葉県00-0000-0000xxxxxxxxxx@xxxx.xxx


以上のように、Play + Javaでxlsファイルが簡単に作れました。
今回はMapオブジェクトの指定とと繰り返ししか紹介しませんでしたが、
他にも関数を指定したり色々出来ますので試してみて下さい。

それでは。

次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...