美文网首页
ExcelUtils使用

ExcelUtils使用

作者: 苏筱筑 | 来源:发表于2017-05-25 18:03 被阅读0次

实习第二周 NO.2 Plus

项目组长刚把以前的excel模板发给我的时候,看得我是目瞪口呆,一度以为那是一种我不懂得新的语言。后来才知道它是这么个东东
“ExcelUtils代表着一类的报表生成工具,他使用报表本身作为模板。对于它,只能处理Excel文件,它以Excel文件为模板,在其上加以自己的定义语言,简单通俗!”
ExcelUtils官网
使用起来也很简单,就是先在excel的表格里写好自己的excelutils模板,然后准备好要传入的数据集合,最后通过export()方法实现生成导出就好啦。

定义excel模版(在excel中使用自定义标签)
1.遍历list(迭代输出list中数据)

#foreach detail in ${list}
${detail.name} ${detail.qty} ...
#end

在#foreach和#end之间获取detail对象的属性,还有以下几种特殊的变量:

${detailId}——list的索引
${detailIndex}——序号
${detailStartRowNo}——遍历时开始行号
${detailEndRowNo}——遍历结束行号

2.获取变量的值

${printDate}
${model.name}
${map(key)}——获取value

其中${!model.name}:如果该值和上一个数值相同,则合并该单元格;可以取某一个年份的,自动合并该单元格
3.取和(针对某一列)

#formula SUM(C${detailStartRowNo}:C${detailEndRowNo})

4.取和(针对某一行)

#formula SUM(C${currentRowNo}:F${currentRowNo})

5.遍历对象的所有属性(兼容poi高版本导致#each标签失效)

#each ${model}

6.遍历对象符合条件的属性,${width1}代表合并几个单元格

#each ${model} on ${keys}
#each ${model} ${width1},${width2}... on ${keys}

7.If标签

①#if (${a.tranType}=="201" || ${a.tranType}=="203")
#end
②#formula IF(${sex}=1,"男","女")需注意sex字段为数值类型

8.根据条件统计数值

#sum qty on ${list} where name=test
#sum qty on ${list} where name like test
#sum qty on ${list} where name like ${value}

9.调某一个方法

#call service.getStr("str",${aaa})
#call service.getModel("str",${aaa}).name

Java代码导出示例
public String prExport() throws Exception {
try {
/数据处理部分start/
Person person = this.personService.search(appDis.getPersonId());

/数据处理部分end/
/工具 start/
ExcelUtils.addValue("exportDate", DateUtil.getNowDate("yyyy年M月d日"));
ExcelUtils.addValue("person", person);
/工具 end/
String path = ServletActionContext.getServletContext().getRealPath("WEB-INF");
String config = path+"\xls\prAppDis.xls";//已定义好的模板
String fileName = "聘用合同办理备案表"+System.currentTimeMillis()+".xls";
File file = new File(Resource.PATH+"\d_rs_app_dis");
if(!file.exists() && !file.isDirectory()){
System.out.println("//不存在");
file.mkdirs();
}else{
System.out.println("//目录存在");
}
File exportFile = new File(Resource.PATH+"\d_rs_app_dis",fileName);
if(!exportFile.exists()){
exportFile.createNewFile();
}
FileOutputStream fo = new FileOutputStream(exportFile);
ExcelUtils.export(config, fo);
fo.close();
/至此文件已导出成功/

    } catch (Exception e) {
        LogUtil.exception(e);
        status = e.getMessage();
    }
    return SUCCESS;
}

导出报表

public String exporCountPerson() throws Exception{
//这个方法就是使用POI动态生成excel的模板,里面已经拼好了ExcelUtils的标签,参数就是要拼接到表头以及数据信息     
trStatisticsService.exportTrstatistics(headList,headerList,dicList);
//给excel模板中的标签list赋值
        ExcelUtils.addValue("list", this.mapList);
//使用ExcelUtils输出文件
        String path = ServletActionContext.getServletContext().getRealPath("");
        String config = path + "\\template\\trstatisticsNum.xls";
        File file = new File(path, "trstatisticsNum.xls");
        if (file.exists()) {
            file.delete();
        }
        file.createNewFile();
        FileOutputStream fo = new FileOutputStream(file);
        ExcelUtils.export(config, fo);
        fo.close();
        this.excelFile = new FileInputStream(file);
        this.downloadFileName = new String("各单位各类培训持证人数汇总报表.xls".getBytes(), "ISO8859-1");
        return "exportExcel";
    }

相关文章

网友评论

      本文标题:ExcelUtils使用

      本文链接:https://www.haomeiwen.com/subject/ockzxxtx.html