ExcelテンプレートエンジンJETTの紹介

| 2 min read
Author: koshiro-fukushima koshiro-fukushimaの画像

Javaで使えるExcelテンプレートエンジンJETTを紹介させていただきます。導入方法等の詳細については公式サイトをご覧ください。

Contents

特徴

#

JETT (Java Excel Template Translator) は、Excelテンプレートを使用してExcelスプレッドシートを作成できるテンプレートエンジンです。

大まかな流れ

Excelテンプレートを準備し、アプリケーション側からデータを与えるとテンプレートに沿ったファイルを生成してくれます(詳しい使い方は後述)。テンプレートファイル側にセルのスタイルが定義できるので、Excelファイル出力によく使われる Apache POI と比べて体裁の管理が楽にできます。

導入

#

Maven2 を使用している場合は、pom.xml に次の依存関係を配置できます。0.3.0 以降、JETT は Maven 2 セントラル リポジトリで利用できるようになりました。

<dependency>
<groupId>net.sf.jett</groupId>
<artifactId>jett-core</artifactId>
<version>0.11.0</version>
</dependency>

基本的な使い方

#

次のサンプルコードをベースに基本機能のご紹介をいたします。

/**
* JETT Sample
*/

public class Sample {

public static void main(String[] args) throws Exception {
Map<String, Object> map = new HashMap<>();

map.put("string", "Hello!");
map.put("list", Arrays.asList("one", "two", "three", "four", "five"));
map.put("formula", "today()");

ExcelTransformer transformer = new ExcelTransformer();

InputStream in = Sample.class.getResourceAsStream("./sample.xlsx");
FileOutputStream out = new FileOutputStream(new File("./output.xlsx"));

Workbook workbook = transformer.transform(in, map);
workbook.write(out);
out.close();
}

}

サンプルのソースコードは以下に公開しております。

式の評価

#

テンプレートを記述した${EL式} が評価されます。
式の評価

式を評価したくない場合

#

<jt:null> ~ </jt:null> で括られたセルは式が評価されません。
式を評価したくない場合

ループその1

#

<jt:forEach> タグを使ってループ処理が行えます。
(画像は出力結果のみです)
ループその1

ループその2

#

copyRight属性を使用すると横方向へループします。
(画像は出力結果のみです)
ループその2

メモ付きセル

#

<jt:comment> タグを使うとメモ付きのセルを作れます。
(画像は出力結果のみです)
メモ付きセル

Excel関数や式を入れる

#

Excel関数や式を入れる場合は <jt:formula> タグを使います。
(画像は出力結果のみです)
Excel関数や式を入れる

まとめ

#

今回はJETT (Java Excel Template Translator) でテンプレートファイルからExcelファイルを出力する方法を紹介しました。他にも便利なタグが提供されております。詳しくは The JETT Tag Libraryをご覧ください。

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 自然言語処理初心者が「GPT2-japanese」で遊んでみた (2022-07-08)
  2. Tauri でデスクトップアプリ開発を始める (2022-07-08)
  3. Deno による Slack プラットフォーム(オープンベータ) (2022-09-27)
  4. Jest再入門 - 関数・モジュールモック編 (2022-07-03)
  5. ORマッパーのTypeORMをTypeScriptで使う (2022-07-27)
  6. 第1回 OpenAPI Generator を使ったコード生成 (2022-06-04)
  7. 直感が理性に大反抗!「モンティ・ホール問題」 (2022-07-04)
  8. Rust によるデスクトップアプリケーションフレームワーク Tauri (2022-03-06)
  9. 箱ひげ図で外れ値を確認する (2022-05-18)
  10. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する (2022-09-25)