けJavaでExcel出力ならJETTが扱いやすいHOMEJavaJavaでExcel出力ならJETTが扱いやすいJavaでExcel出力ならPOIが定番だけど、ラッパーライブラリである「JETT」が扱いやすかったので紹介します。出力」みたいなワードで検索すると、ほとんどがPOIのネタばかり。それくらいJavaでExcelといえばPOIなわけです。POI本体は非常にプリミティブなライブラリで、扱いは正直しんどい。コーディング量も多いし、Excelのバージョンにも悩まされた時期もありました。コードがサクサク書けて、管理も楽チンみたいな感じでないとモチベーションが下がります。いう帳票ツールにも活躍してもらいましたが、こちらはMavenリポジトリに登録されていないため、ローカルでライブラリ管理しなければならず若干面倒です。おまけに最近は更新もされていないようだし。Mavenリポジトリにも登録されているためライブラリ管理も楽チン。コーディング量も少ないし、レスポンスも良い。頻繁にバージョンアップしている感じ。検証してみたので何回かに分けて紹介します。1.16.10JETTでExcel出力する方法JETTでExcel出力には、Excel(xlsx)のテンプレートファイルを用意し、出力コードを書きます。ヘッダ部、明細部、フッター部に分けられた単票ですね。ここでは下図のような請求書のテンプレートファイルを用意しました。template_invoice.xlsxという名前で保存しました。黄色部分にはJETTのタグが書いてあります。簡単に説明しておきます。リスト化して要素を出力する。終わりの最終列にを記述する。リスト化後の合計に使用できる。フッタ部ここで利用しているもの以外にも実に様々なタグがあります。Basics」を参照してください。Mavenプロジェクトを作成し、テンプレートファイルをresources内に保存しましょう。</dependency></dependencies>まずはテンプレートファイルにパラメータを指定し、Excelファイルへの変換をおこなうクラスを用意します。Map次にDTOクラスを用意します。Lombokを使ってます。使ったことがない方は下記を参考にしてみてください。Lombokを使ってJavaBeansコードをシンプルに書く方法Lombokとは、JavaBeansコードを書く際に、getter・setterをコード上に直接書かかず、アノテーションを付与してgetter,setter,toString,equalsなどの繰り返しコードを自動生成してくれるプロダクト。コードが宣言的になり、可読性が高まるのが特徴。サンプルソースで紹介。ArrayList<InvoiceDetail>();}最後にテストクラスを書きます。}}ここまで作るとこんな感じになります。test/resourcesにもテンプレートファイルをコピーするのを忘れずにMakeInvoiceTestを実行すると・・・おおおー、請求書がExcel出力されたー^^JETTのレスポンスを図るJavaで簡単にExcel出力できることがわかったJETTですが、Excel出力の速度はどうなんでしょうか。ブック内1シートに、30列/5000行に対して値を埋め込むと何秒くらいかかるのか、実測してみましょう。Excelでテンプレートを作ります。30列なので、A列からAD列までを要素で埋めます。リスト化して要素を出力する。template_response_check.xlsxという名前でresourcesに保存します。次に、DTOクラスを作ります。col30;}最後にテストクラスを作ります。}}ここまで作るとこんな感じになります。test/resourcesにもテンプレートファイルをコピーするのを忘れずに。2018という結果になりました。約20秒、十分な速度でしょう。参考サイト過去にPOIとかPOIラッパーライブラリを扱ったことがある方でしたら、本家サイトを見れば理解できちゃうと思います。JETTこちらは大変参考になりました。当記事が似たような記事になってしまいました^^;・ExcelテンプレートエンジンJETTを利用して請求書を出力しようまとめいかがでした?今回は「JavaでExcel出力ならJETTが扱いやすい」ということを紹介しました。JETTには、シートコピーする方法とか、列にループする方法なんかも用意されています。こちらは別の機会に紹介したいと思います。