VTLを似非拡張してExcel→ソース生成をやらせてみる。
テンプレートがこんな感じ
$_sys.load("su", "org.apache.commons.lang.StringUtils")
$_sys.load("cu", "org.apache.commons.lang.ClassUtils")
$_xls.read("book", "C:/eclipse/workspace/xlsgen/etc/bean.xls")
#foreach($sheet in $book.sheets)
public class $sheet.name {#foreach($row in $sheet.rows(1))
#set($name = "$row.cell(0)")
#set($cname = $su.capitalize($name))
#set($type = "$row.cell(1)")
#set($stype = $cu.getShortClassName($type))
#set($desc = "$row.cell(2)")
private $type $name;/**
* ${desc}を取得する。
*
* @return ${desc}
*/
public $stype get${cname}() {
return $name;
}/**
* ${desc}をセットする。
*
* param $name $desc
*/
public void set${cname}($stype $name) {
this.$name = $name;
}#end
}
$_file.out("${sheet.name}.java")
#end
エクセルがこんな感じ。
プロパティ名 | 型 | 説明 |
---|---|---|
foo | java.lang.String | ふー |
bar | java.lang.String | ばー |
出力ファイルがこんな感じ。
public class Hoge {private java.lang.String foo;
/**
* ふーを取得する。
*
* @return ふー
*/
public String getFoo() {
return foo;
}/**
* ふーをセットする。
*
* param foo ふー
*/
public void setFoo(String foo) {
this.foo = foo;
}private java.lang.String bar;
/**
* ばーを取得する。
*
* @return ばー
*/
public String getBar() {
return bar;
}/**
* ばーをセットする。
*
* param bar ばー
*/
public void setBar(String bar) {
this.bar = bar;
}}
…スクリプト言語を使えって話かも。
Groovyとか使ったほうが簡単かなぁ…