EXCELテンプレートエンジン JETT を使ってみた。

JETT(EXCELテンプレートエンジン)を使って、試しに「掛け算九九表」を作ってみました。 出力結果

「掛け算九九表」なので、2重ループを使ってEXCELのセルは縦横に値を配置しています。

準備

ソースコード (download)

package org.netf.samples.jett_loop;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import net.sf.jett.transform.ExcelTransformer;

/**
 * Template Engine JETT Loop Sample
 */
public class SampleMain {

	public static void main(String[] args) throws Exception {

		ClassLoader loader = Thread.currentThread().getContextClassLoader();
		String path = loader.getResource("output").toURI().getPath();

		ExcelTransformer transformer = new ExcelTransformer();
		Map<String, Object> param = new HashMap<>();

		try (InputStream in = loader.getResourceAsStream("template/sample-template.xlsx");
				OutputStream out = new FileOutputStream(new File(path, "sample.xlsx"));) {

			Workbook workbook = transformer.transform(in,
					Arrays.asList("loop"), // テンプレートのシート名
					Arrays.asList("result"), // 出力ファイルのシート名
					Arrays.asList(param) // パラメータ
			);

			workbook.write(out);

			workbook.close();
		}

	}

}

テンプレートのEXCELには以下のJETTタグを埋め込んでいます。

A2セル:<jt:for start="1" end="9" step="1" var="y">
B2セル:<jt:for start="1" end="9" step="1" var="x" copyRight="true">${x*y}</jt:for>
C2セル:</jt:for>

ちょっとしたポイント

ループを使って連続で値を配置する場合、<jt:for> や <jt:forEach> のタグを使います。 デフォルトではセルの縦方向にループします。copyRight 属性を true にすると横方向にループします。

感想

ここでの copyRight は著作権の意ではなく、右方向にコピー。。。