导包:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.0.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.1</version>
</dependency>
代码:
//导出
public void exportUser(HttpServletResponse response){
ServletOutputStream out = null;
try {
//1.获取user
List<User> list = userService.list();
//2.设置excel
// 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter(true);
//自定义标题别名
writer.addHeaderAlias("fullName", "FULL");
writer.addHeaderAlias("username", "UUUUserName");
//强制性重写localCache--------此配置为true-只使用重写后的别名作为表格标题,不使用bean的字段
// writer.setOnlyAlias(true);
// 一次性写出内容,使用默认样式,强制中出标题
writer.write(list, true);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("user", "UTF-8") + ".xlsx");
out = response.getOutputStream(); //out为OutputStream,需要写出到的目标流
writer.flush(out, true);
//3.关闭writer,释放内存
writer.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
IoUtil.close(out);
}
}
注意:
//controller
@GetMapping("start/export")
public void startExport(HttpServletResponse response){
userTask.exportUser(response);
}
一开始给controller加了通用返回值,一直在报Could not find acceptable representation 。
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:111)