ExcelUtils代表着一类的报表生成工具,他使用报表本身作为模板。对于它,只能处理Excel文件,它以Excel文件为模板,在其上加以自己的定义语言,简单通俗!
官方主页:http://excelutils.sourceforge.net/Overview.html
- ${model.name} means getting property of the name from the model object.
- ${!model.name} means that last cell and this cell merge if model.name value equals last cell value.
- #foreach model in ${list},means that iterate list,modelId is implied index of the list.
- #each ${model} ${width1},${width2} on ${keys},model can be a Map,JavaBean,Collection or Array object, #each key
will show all property of the model.${width?} means merge ${width?} cells. If only one
width, all property use the same width. If more than one, use the witdh in order, not set will use "1".${keys} can be Map,Array,List which contain field's name you want to display, it's not required. - ${list[0].name} means get the first object from list, then read the property of name.
- ${map(key)} get the value from the map by the key name.
- ${list[${index}].name} [] can be a variable.
- ${map(${key})} () can be a vriable.
- #sum qty on ${list} where name like/=str sum qty on ${list} collection by where condition.
- In net.sf.excelutils.tags Package, you can implement ITag to exentd Tag key. eg, FooTag will parse #foo.
- ExcelResult for webwork.
- ${model${index}} support.
- #call service.method("str", ${name}) call a method
- #formual SUM(C${currentRowNo}:F${currentRowNo}) means output excel formula SUM(C?:F?) ? means currentRowNo.
- #page tag to split page.
- #if tag support beanshell scripts.
示例:
模板:
转化代码:
public class Main {/**
* @param args
*/
public static void main(String[] args) {
String[][] datas = { { "001", "张三" }, { "002", "李四" }, { "003", "王五" } };
ExcelUtils.addValue("datas", datas);
String config = "template/t1.xls";
try {
FileOutputStream fo = new FileOutputStream("result.xls");
ExcelUtils.export(config, fo);
} catch (ExcelException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}}
结果输出的excel: