xlsgen / チュートリアル / ExcelからJavaBeanのコードを生成する(Antを使う)


[ xlsgen ]

ソース

beans.vm

$_sys.load("su", "org.apache.commons.lang.StringUtils")
$_sys.load("cu", "org.apache.commons.lang.ClassUtils")
$_xls.read("book", "beans.xls")
#foreach($sheet in $book.sheets)
#set($clsname = "${sheet.row(0).cell(1)}")
#set($clsdesc = "${sheet.row(1).cell(1)}")
#set($sheet.titleLine = 2)
/**
 * $clsname<br>
 * $clsdesc
 */
public class $sheet.name {

#foreach($row in $sheet.table)
#set($name = "$row.cell('プロパティ名')")
#set($cname = $su.capitalize($name))
#set($type = "$row.cell('型')")
#set($stype = $cu.getShortClassName($type))
#set($desc = "$row.cell('説明')")
	/////////////////////////////////////////////////////////////////
	// $desc

	private $stype $name;
	
	/**
	 * $descを取得する。
	 *
	 * @return $desc
	 */
	public $stype get${cname}() {
		return $name;
	}

	/**
	 * ${desc}をセットする。
	 *
	 * @param $name $desc
	 */
	public void set${cname}($stype $name) {
		this.$name = $name;
	}

#end
}
$_wrt.out("${sheet.name}.java")
#end

beans.xls

beans_xls.gif

build.xml

<?xml version="1.0"?>
<project name="xlsgen" default="xlsgen" basedir=".">
	<property name="root.dir" value="${basedir}/../.." />
	<property name="lib.dir" value="${root.dir}/lib" />

	<path id="classpath">
		<fileset dir="${root.dir}" includes="xlsgen.jar" />
		<fileset dir="${lib.dir}" includes="**/*" />
	</path>

	<taskdef name="xlsgen" classname="xlsgen.ant.XlsgenTask">
		<classpath refid="classpath" />
	</taskdef>

	<target name="xlsgen">
		<xlsgen vmfile="beans.vm">
			<classpath refid="classpath" />
		</xlsgen>
	</target>
</project>

生成されたJavaBean?のコード


Emp.java

/**
 * 社員クラス<br>
 * 社員の情報を保持します。
 */
public class Emp {

	/////////////////////////////////////////////////////////////////
	// 姓名

	private String name;
	
	/**
	 * 姓名を取得する。
	 *
	 * @return 姓名
	 */
	public String getName() {
		return name;
	}

	/**
	 * 姓名をセットする。
	 *
	 * @param name 姓名
	 */
	public void setName(String name) {
		this.name = name;
	}

	/////////////////////////////////////////////////////////////////
	// 年齢

	private int age;
	
	/**
	 * 年齢を取得する。
	 *
	 * @return 年齢
	 */
	public int getAge() {
		return age;
	}

	/**
	 * 年齢をセットする。
	 *
	 * @param age 年齢
	 */
	public void setAge(int age) {
		this.age = age;
	}

	/////////////////////////////////////////////////////////////////
	// 役職

	private String position;
	
	/**
	 * 役職を取得する。
	 *
	 * @return 役職
	 */
	public String getPosition() {
		return position;
	}

	/**
	 * 役職をセットする。
	 *
	 * @param position 役職
	 */
	public void setPosition(String position) {
		this.position = position;
	}

	/////////////////////////////////////////////////////////////////
	// 給与

	private long salary;
	
	/**
	 * 給与を取得する。
	 *
	 * @return 給与
	 */
	public long getSalary() {
		return salary;
	}

	/**
	 * 給与をセットする。
	 *
	 * @param salary 給与
	 */
	public void setSalary(long salary) {
		this.salary = salary;
	}

}

Dept.java

/**
 * 部署クラス<br>
 * 部署の情報を保持します。
 */
public class Dept {

	/////////////////////////////////////////////////////////////////
	// 部署名

	private String name;
	
	/**
	 * 部署名を取得する。
	 *
	 * @return 部署名
	 */
	public String getName() {
		return name;
	}

	/**
	 * 部署名をセットする。
	 *
	 * @param name 部署名
	 */
	public void setName(String name) {
		this.name = name;
	}

	/////////////////////////////////////////////////////////////////
	// 人数

	private int count;
	
	/**
	 * 人数を取得する。
	 *
	 * @return 人数
	 */
	public int getCount() {
		return count;
	}

	/**
	 * 人数をセットする。
	 *
	 * @param count 人数
	 */
	public void setCount(int count) {
		this.count = count;
	}

	/////////////////////////////////////////////////////////////////
	// 部署の説明

	private String desc;
	
	/**
	 * 部署の説明を取得する。
	 *
	 * @return 部署の説明
	 */
	public String getDesc() {
		return desc;
	}

	/**
	 * 部署の説明をセットする。
	 *
	 * @param desc 部署の説明
	 */
	public void setDesc(String desc) {
		this.desc = desc;
	}

	/////////////////////////////////////////////////////////////////
	// 上位の部署

	private Emp upper;
	
	/**
	 * 上位の部署を取得する。
	 *
	 * @return 上位の部署
	 */
	public Emp getUpper() {
		return upper;
	}

	/**
	 * 上位の部署をセットする。
	 *
	 * @param upper 上位の部署
	 */
	public void setUpper(Emp upper) {
		this.upper = upper;
	}

}