Hutool Excel文档链接
Hutool总参考文档官网:https://www.hutool.cn/docs/#/
Hutool Excel 文档连接:https://www.hutool.cn/docs/#/poi/Excel%E5%B7%A5%E5%85%B7-ExcelUtil
上手操作Hutool Excel
导入Maven Hutool总依赖
不同Hutool版本与POI支持不一致,需要前往查看:https://www.hutool.cn/docs/#/poi/%E6%A6%82%E8%BF%B0
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
设置Pojo->Excel映射
如果需要设置导出的表格名称 请设置
将来 导出数据的时候 就会直接 将companyName 的列名 叫为 企业名
@Data
@AllArgsConstructor
public class User implements Serializable {
private String name;
@Alias("注解年龄,使用注解会覆盖排序,会覆盖掉addHeaderAlias设置的同名标题名")
private String age;
private Integer areaId;
private Date birthday;
private boolean isman;
public User(String name, Integer areaId, boolean isman,Date birthday) {
this.name = name;
this.areaId = areaId;
this.isman = isman;
this.birthday = birthday;
}
private static final long serialVersionUID = 1L;
}
调用Hutool API 常规Excel导出
既然说了常规Excel,就说明有非常规Excel,也就是大数据Excel。具体请查看官网BigExcelWriter用法
保存到本地
创建ExcelWrite的时候,指定文件位置即可!如:ExcelUtil.getWriter("d:/writeBeanTest.xlsx");
// 通过工具类创建writer
ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest.xlsx");
// 合并单元格后的标题行,使用默认标题样式
writer.merge(4, "一班成绩单");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write("我是集合数据", true);
// 关闭writer,释放内存
writer.close();
设置响应导出到前端下载(.xls格式)
public String testAssertUtils(HttpServletResponse response) {
// 获取的对象List即可
List<User> userList = new ArrayList<>();
userList.add(new User("张三", 10, true, new Date(ThreadLocalRandom.current().nextInt(100000000))));
userList.add(new User("李四", 20, true, new Date(ThreadLocalRandom.current().nextInt(100000000))));
userList.add(new User("王五", 30, true, new Date(ThreadLocalRandom.current().nextInt(100000000))));
ExcelWriter writer = ExcelUtil.getWriter(); // 通过工具类创建writer,默认创建xls格式
// 设置标题设置顺序,如果字段使用@Alias注解,那么此字段排序优先于所有addHeaderAlias。
writer.addHeaderAlias("name", "姓名")
.addHeaderAlias("age", "注解与addHeaderAlias在Excel标题设定与排序优先级高,所以本addHeaderAlias在Excel不起作用")
.addHeaderAlias("areaId", "区域")
.addHeaderAlias("birthday", "年龄")
.addHeaderAlias("isman", "是否人类");
// writer.getCell("age").setCellValue(); 这个是设置单元格的,可以对单元格进行更多形式数据格式的操作
writer.autoSizeColumnAll(); // 自动跳转列长度
writer.write(userList, true); // 一次性写出数据,使用默认Excel样式。第二个参数:强制输出标题
// 处理响应对象
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
// 设置Excel文件名,文件名不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=test.xls");
// out为OutputStream,需要写出到的目标流
ServletOutputStream out = null;
try {
out = response.getOutputStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
// 写入请求
writer.flush(out, true);
// 关流
writer.close(); // 关闭writer,释放内存
IoUtil.close(out); // 此处记得关闭输出Servlet流
return "OK";
}
Excel文件后缀特别说明
默认是xls格式
ExcelUtil.getWriter()
默认创建是xls格式,因此写出到客户端也需要指定filename为XXX.xls,否则会出现文件损坏的提示。
生成xlsx格式
请使用ExcelUtil.getWriter(true)
创建。
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();
} catch (IOException e) {
throw new RuntimeException(e);
}
writer.flush(out, true);
writer.close();
IoUtil.close(out);
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
评论(0)