先来一个官方链接参照:https://easypoi.mydoc.io/
1.pom.xml中maven依赖如下:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.1.0</version>
</dependency>
2.java代码如下:
// 获取导出excel指定模版
TemplateExportParamsparams =new TemplateExportParams("com/xxxx/doc/easypoi.xls");
// 设置sheetName
params.setSheetName("easypoi报表");
Map data =new HashMap();
data.put("start","2022-01-01");//开始日期
data.put("end","2022-01-01");//结束日期
ArrayList<Map<String,String>> arrList =new ArrayList();
BigDecimal total =new BigDecimal(0);
for (inti =0;i<10;i++) {
total =total .add(100);//合计自动计算功能不好用 --请大神指点
HashMap map =new HashMap();
map.put("A","1");
map.put("B","2");
map.put("C","3");
map.put("D","2");
arrList.add(map);
}
data.put("testList",arrList);
Workbookworkbook = ExcelUtil.getWorkbook(params,data);
//下载
ExcelUtil.htmlExport(response,workbook,"easypoi报表");
3.工具类方法
/**
* 生成excel对象
*
* @param params 模板导出参数设置
* @param data 模板导出数据
* @return workBook对象
* @throws Exception 异常抛出
*/
public static Workbook getWorkbook(TemplateExportParams params, Map<String, Object> data) throws Exception {
Workbook book = null;
try{
book = ExcelExportUtil.exportExcel(params, data);
}catch(Exception e){
e.printStackTrace();
}
return book;
}
/**
* 导出excel对象
*
* @param response httpResponse对象
* @param workbook workBook对象
* @param fileName 导出文件名
* @throws Exception 异常抛出
*/
public static void htmlExport(HttpServletResponse response, Workbook workbook, String fileName) throws Exception {
response.reset();
response.setContentType("application/x-msdownload");
response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("gb2312"), "ISO-8859-1") + ".xls");
ServletOutputStream outStream = null;
try {
outStream = response.getOutputStream();
workbook.write(outStream);
} finally {
outStream.close();
}
}
4.指定路径下模板文件
controller部分省略。。。。
web侧 下载请求部分参考:
//设置url
param1 = "test1";
param2 = "test2";
var url =PATH + "/DownLoad?param1="+param1 +"¶m2="+param2;
var form = $("<form></form>").attr("action", url).attr("method", "post");
form.appendTo('body').submit();