まとめ
- Fisshplate – Fisshplate Home
- Fisshplate のオブジェクトに POI のオブジェクトを渡してエクセルに反映する場合、反映のためにアクセスされるのは POI のプロパティではなく POI のゲッターメソッド
- POI には、ゲッターメソッドさえあれば良い。プロパティはなくても良い。
- POI のゲッターメソッド名が getAbcDef() の場合は、エクセルテンプレートの ${abcDef} に反映される。
- oki2a24/testfisshplate: Fisshplate ライブラリの使い方、調査サンプルです に試した内容を置いた。
やってみた。準備編
Fisshplate といえば Seasar2 フレームワークで使用すると真価を発揮するそうですが、今回は Gradle です。
適当なディレクトリを作成し、gradle init --type java-application します。その後、次のようにファイルを修正しました。また、test ディレクトリは使用しないため削除しました。さらに、src/main/resources/aaaa/sample.xls ファイルを追加しました。
plugins {
id 'java'
id 'application'
}
mainClassName = 'App'
dependencies {
compile group: 'org.seasar.fisshplate', name: 'fisshplate', version: '0.1.4'
}
repositories {
jcenter()
maven {
url "https://www.seasar.org/maven/maven2/"
}
}
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.seasar.fisshplate.template.FPTemplate;
public class App {
public static void main(String[] args) throws Exception {
Map<String, Poi> map = new HashMap<String, Poi>();
map.put("data", new Poi());
InputStream is = App.class.getClassLoader().getResourceAsStream("aaaa/sample.xls");
System.out.println(App.class.getClassLoader().getResource("aaaa/sample.xls")); // debug: テンプレートのパス
FPTemplate template = new FPTemplate();
HSSFWorkbook wb;
try {
wb = template.process(is, map);
} catch (Exception e) {
//例外処理
throw e;
}
FileOutputStream fos = new FileOutputStream("out.xls");
wb.write(fos);
fos.close();
}
}
ポイントは次のコードです。POI ですけれども、あえてプロパティをなくし、ゲッターメソッドのみです。
public class Poi {
public Integer getNumOne() {
return 1;
}
public Integer getNumTwo() {
return 1 + 1;
}
public Integer getNumThree() {
return 1 + 2;
}
}
src/main/resources/aaaa/sample.xls は、次のようにしました。
- A1 セル: ${data.numOne}
- A2 セル: ${data.numTwo}
- A3 セル: ${data.numThree}
やってみた。実行、結果編
$ gradle run > Task :run file:/Users/oki2a24/testfisshplate/build/resources/main/aaaa/sample.xls BUILD SUCCESSFUL in 2s 3 actionable tasks: 3 executed $
out.xls が Gradle プロジェクトのホームディレクトリの作成されていましたので開いてみると、テンプレートに POI のゲッターメソッドの値が反映されています!
おわりに
ゲッターメソッドが大事ということがわかりましたので、プロパティの値等の計算結果をゲッターメソッドの返り値として用意するなどすれば、応用範囲が広がりますね♪
よいことが知れました。
以上です。


