JAVA中Excel导出方式一:EasyPoi
pom文件导入依赖
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.3.0</version>
</dependency>
实体
@Data
public class User {
@Excel(name = "姓名")
private String name;
@Excel(name = "地址")
private String address;
@Excel(name = "电话")
private String mobile;
}
简单实现
public void exportExcel(List<User> userList, HttpServletResponse httpServletResponse) throws IOException {
// 根据业务场景不同,数据获取不同
// 1.用户选取部分数据导出:前端将导出数据传参userList
// 2.导出查询后的数据,不需要传参导出数据
// 拟造测试数据
List<User> userList = new ArrayList<>();
User user = new User();
user.setName("测试");
user.setMobile("12345678900");
user.setAddress("测试地址");
userList.add(user);
// ExportParams("","") 中的名称是单个表名(sheet1,sheet2...)和表头名
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用户数据表", "用户数据表", ExcelType.XSSF),User.class, userList);
// fileName的名字是Excel文件名
// 请教一个问题:如何解决这个文件名为中文时,导出的文件名一直是乱码
String fileName = "UserListExcel";
httpServletResponse.setCharacterEncoding("UTF-8");
httpServletResponse.setHeader("content-Type", "application/vnd.ms-excel");
httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
workbook.write(httpServletResponse.getOutputStream());
}