使用springboot导出excel
导包
<!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
<!-- hutool 工具 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
我们使用hutool工具包直接上代码:
@PostMapping("/export")
public void export(HttpServletResponse response){
//查询数据列表
List<User> list = userMapper.getList();
//导出excel
//通过工具类创建writer,默认创建xls格式
//若想生成xlsx格式,请使用 ExcelUtil.getWriter(true) 创建。
ExcelWriter writer = ExcelUtil.getWriter();
//自定义标题别名
writer.addHeaderAlias("userCode", "用户编号");
writer.addHeaderAlias("userName", "用户名称");
writer.addHeaderAlias("area", "所属区域");
writer.addHeaderAlias("remark", "备注");
// 只输出指定字段
writer.setOnlyAlias(true);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(list, true);
response.setCharacterEncoding("utf-8");
//写出xls格式
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
//写出xlsx
//out为OutputStream,需要写出到的目标流
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename=test.xlsx");
ServletOutputStream out= null;
try {
out = response.getOutputStream();
writer.flush(out, true);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
// 关闭writer,释放内存
writer.close();
}
//此处记得关闭输出Servlet流
IoUtil.close(out);
}
注意 ExcelUtil.getWriter()
默认创建xls格式的Excel,因此写出到客户端也需要自定义文件名为XXX.xls,否则会出现文件损坏的提示。 若想生成xlsx格式,需使用ExcelUtil.getWriter(true)
创建。