先是依赖问题,正常的就是导入三个依赖
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.1.0</version>
</dependency>
单是普通导入就只需要在测试包中创建一个测试类就可以了
/**
* 无需创建java模板,直接copy文件,可以修改传入参数,
* @throws Exception
*/
@Test
public void fe_map() throws Exception {
//获取要导出的excel指定模版地址
TemplateExportParams params = new TemplateExportParams(
"C:/Users/SeaLoong/Desktop/21.7.23日报表.xls");
// TemplateExportParams params = new TemplateExportParams(
// "C:/Users/SeaLoong/Desktop/测试.xlsx");
Map<String, Object> map = new HashMap<String, Object>();
//如有需要更改的则将参数写入到表格中进行添加
map.put("date", "2021年7月23日");
//在这些参数下遍历要传入的参数数据,同时若是excel表格中所写的参数要与下面的listMap相关,并且其缩写最好省略
List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
for (int i = 0; i < 4; i++) {
Map<String, String> lm = new HashMap<String, String>();
// lm.put("id","12334"+i);
// lm.put("age","年龄");
// lm.put("cycle","周期");
// lm.put("identity","身份");
// lm.put("state","状态");
lm.put("id","项目");
lm.put("project","000"+i);
listMap.add(lm);
}
map.put("listMap", listMap);
//修改sheet表的名称
//params.setSheetName("重工财司");
Workbook workbook = ExcelExportUtil.exportExcel(params, map);
//文件地址,判断是否存在,不存在就创建
File savefile = new File("D:/excel/");
if (!savefile.exists()) {
savefile.mkdirs();
}
//设置Excel的文件地址及文件名
FileOutputStream fos = new FileOutputStream("D:/excel/21.7.23日报表.xls");
// FileOutputStream fos = new FileOutputStream("D:/excel/测试.xlsx");
workbook.write(fos);
fos.close();
}
与这个测试类对应的Excel表需要对应的则细节一点, 首先模板表格的参数,官网上说过多个参数输入的话可使用{{符号 fe 冒号 名称 t t.id}}其中,这个t是默认的。初入手时,没有进行修改,导致表格始终赋值不上,经查询发现是带着t的问题(具体为什么没有说明)。
还有遍历传入多个值时,表格要看好是否格式正确,是否有些表格的文本格式进行了修改,若是进行了修改可能在导出时会出现Excel模板错误报空指针的错误.
表格的参数为:
其listMap对应java代码中的map.put("listMap",listMap)中的"listMap"