如何利用hutool实现Excel的导出实战

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

今天我们来聊聊关于导入导出的需求实现:

背景:

经过对于数据同步的经过之后,老板今天又说,我想让客户直接直观的可以将数据看到, 但是呢又不想一个个新建,你又🈶啥可以高效的方法呢,导入啊;

我提出的一个方案,就是将我们需要的数据,按照一个模板直接导入到系统平台中,达到可以显示出新建数据的需求;

导入和导出是我们常用于直观新建数据集合,导出多用于数据统计,比如当月的绩效,考勤等,钉钉就支持导出当月的打卡记录,这就是一个比较典型的导出, 导出的格式是EXCEL,其中也要确定,导出是2007-13版本的,后缀是xslx,xsl格式的,

对于导入导出的,功能,我们常见的是根据POI,Apache的开源组织的 对于EXCEL的导出,细节的话,可以看我上次的文章:xie.infoq.cn/article/8c0…(关于POI),这也是比较官方的类库,支持office套件的数据统计化的工具;

现在已经到2021年了,对于类库,已经层出不穷,所以,这次我给大家推荐一个关于直接上手的工具,名称叫hutool, 也成为“糊涂”,也即是大家可以糊涂的知道他使用就可以,因为他的底层已经封装好了很多好的类库,官网地址www.hutool.cn/(主页)

这个是我比较喜欢的一个工具,而且对于Java开发者来说,可以极大程度的上提升你的开发效率,底层封装的很高效编辑,其中主要有,我们对于JSONutil,(JSON的依赖),ID(自定义自增ID),时间戳,HTTP请求,过滤器,类型转化,以及数据校验等,当然也缺少不了,今天的小主题:

www.hutool.cn/docs/#/

常见的组件,我们可以单出的导入pom文件中,加入依赖,如果想都用,也可以使用hutool-all;

下期介绍关于如何使用hutool的工具实现导出的具体功能

今天我们来讲讲熟知的HUTOOL如何展示导出的数据文件, 这里我们用Excel的导出方式,作为方案进行;

Excel导出:

用户想要将数据直观的统计,展示,不喜欢看一行行的数据对比, 想要总结一份表格,然后给老板做汇报,这里就体现出个人化Excel报告图标的展示了,其中特殊字段,展示格式等都需要去调整;

Hutool将Excel写出封装为ExcelWriter,其中将之前POI的底层封装好,支持的版本更好,

其中我们先开始添加依赖:

1
2
3
4
5
6
7
8
9
10
11
12
xml复制代码<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客户端下载;

我们将数据放在文件中,文件发送在返回流中;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
csharp复制代码// 通过工具类创建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关闭

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
csharp复制代码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.数据写入

最主要要的方法是:

1
2
3
ini复制代码ExcelWriter writer = ExcelUtil.getWriter(true);
this.exportWriter(writer);
writer.write(rows);

其中row就是将我们自己的数据写入Excel中去,

1
2
3
ini复制代码List<Test> rows = CollUtil.newArrayList();

//新建了一个数据集,对于写入数据,一次按照每行去创建就可以了

因为官网的例子已经很明确了,上述的代码是我在企业中实际开发中遇到的,希望你可帮助到你,

www.hutool.cn/docs/#/poi/…(excel数据生成)

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%