今天我们来讲讲熟知的 HUTOOL 如何展示导出的数据文件, 这里我们用 Excel 的导出方式,作为方案进行;
背景:
用户想要将数据直观的统计,展示,不喜欢看一行行的数据对比, 想要总结一份表格,然后给老板做汇报,这里就体现出个人化 Excel 报告图标的展示了,其中特殊字段,展示格式等都需要去调整;
Hutool 将 Excel 写出封装为ExcelWriter
,其中将之前 POI 的底层封装好,支持的版本更好,
其中我们先开始添加依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
//我们只需要单纯的poi
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-poi</artifactId>
<version>4.3.5</version>
</dependency>
复制代码
根据这个依赖,我们直接可以使用 EXCEL
1.添加依赖
这里我主要写的是关于导出文件,response 流是处理,也就是直接发送到 servlet 客户端下载;
我们将数据放在文件中,文件发送在返回流中;
// 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter();
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
//out为OutputStream,需要写出到的目标流
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
ServletOutputStream out=response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
复制代码
2.注意 IO 关闭
导出的时候,将 IO 关闭
private void write(ExcelWriter writer, HttpServletResponse response) {
OutputStream out = null;
try {
out = response.getOutputStream();
writer.flush(out);
// 关闭writer,释放内存
writer.close();
// 此处记得关闭输出Servlet流
IoUtil.close(out);
} catch (IOException e) {
log.error("数据导出异常", e);
} finally {
IoUtil.close(out);
}
}
复制代码
对于数据如何写入文件:
3.数据写入
最主要要的方法是:
ExcelWriter writer = ExcelUtil.getWriter(true);
this.exportWriter(writer);
writer.write(rows);
复制代码
其中 row 就是将我们自己的数据写入 Excel 中去,
List<Test> rows = CollUtil.newArrayList();
//新建了一个数据集,对于写入数据,一次按照每行去创建就可以了
复制代码
因为官网的例子已经很明确了,上述的代码是我在企业中实际开发中遇到的,希望你可帮助到你,
https://www.hutool.cn/docs/#/poi/Excel%E7%94%9F%E6%88%90-ExcelWriter(excel 数据生成)
评论