ExcelUtils工具推荐

来源:互联网 发布:映客 逆向源码 编辑:程序博客网 时间:2024/04/27 22:08

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:

  •