当前位置: 代码迷 >> 综合 >> Java集成Hutool实现导出Excel功能
  详细解决方案

Java集成Hutool实现导出Excel功能

热度:43   发布时间:2023-09-06 14:41:03.0

writer.addHeaderAlias(“数据库字段”, “别名”);在工作中刚完成项目集成Hutool实现导出Excel功能,现在记录一下实现过程,方便以后作为例子参考。

Hutool简介
Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。它最初是作者项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。
参考文档:https://www.hutool.cn/docs/#/

Hutool安装
Maven

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>4.6.1</version>
</dependency>


Gradle

compile 'cn.hutool:hutool-all:4.6.1'

Excel生成

实现功能前,我们需要先引入jar包,以下提供两种引入方式:
JAR包查询网址:https://mvnrepository.com/

Maven

<dependency><groupId>xerces</groupId><artifactId>xercesImpl</artifactId><version>2.11.0</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version>
</dependency>

Gradle

implementation 'org.apache.poi:poi:3.17'
implementation 'org.apache.poi:poi-ooxml:3.17'
implementation 'xerces:xercesImpl:2.11.0'

poi-ooxml和poi的版本尽量保持在3.17以上,否则可能报错

ExcelWriter

这里对数据进行导出操作是根据我的业务实际情况来做的,背景为将数据查询出来封装成List集合再进行Excel导出

//通过工具类创建writer
ExcelWriter writer = ExcelUtil.getWriter("文件路径.xlsx");
List ogClaimList = ogClaimMapper.getList(claimChkId);
List rows = CollUtil.newArrayList(ogClaimList);

 

writer.addHeaderAlias(“数据库字段”, “别名”);

//自定义标题别名
writer.addHeaderAlias("insureId", "ID");
writer.addHeaderAlias("chk_id", "投保审核订单ID");
writer.addHeaderAlias("number", "订单号");
writer.addHeaderAlias("name", "客户姓名");
writer.addHeaderAlias("idno", "客户身份证号码");
writer.addHeaderAlias("mobile", "合约手机号");
writer.addHeaderAlias("amount", "合约贷款金额");
writer.addHeaderAlias("duration", "合约期限");
writer.addHeaderAlias("time", "竣工时间");
writer.addHeaderAlias("area", "地区");
writer.addHeaderAlias("city", "城市");
writer.addHeaderAlias("hall", "营业厅");
writer.addHeaderAlias("suppliername", "供应商名称");
writer.addHeaderAlias("mobile", "翼支付手机号");
writer.addHeaderAlias("stage", "保险阶段");
writer.addHeaderAlias("status", "效验状态");
writer.addHeaderAlias("result", "效验结果");
writer.addHeaderAlias("chkperson", "审核人");
writer.addHeaderAlias("number", "交易号");
writer.addHeaderAlias("result", "投保结果");//一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
//关闭writer释放内存
writer.close();

BigExcelWriter

对于大量数据输出,采用ExcelWriter容易引起内存溢出,因此有了BigExcelWriter,使用方法与ExcelWriter完全一致。只需要将创建writer语句修改成如下代码即可,其他语句不变:

//通过工具类创建writer
BigExcelWriter writer = ExcelUtil.getBigWriter("文件路径.xlsx");

总结

总体来说Hutool这个工具包功能还是很强大的,包含了非常多的工具类,我这里对Excel导出的操作是比较简单的,在文档中还提供了自定义样式可供使用。

注意:

用到hutool中ExcelWriter其他方法时.

封装map用下面这个.自己new的会无序.

Map<String, String> map = MapUtil.newHashMap(true);

多个头时用(偷懒方法)

writer.writeRow(map, true);

从浏览器下载:

OutputStream out = response.getOutputStream();

只能调用flush(OutputStream)方法写出到流

writer.flush(out);
writer.close();
out.close();

 

 

  相关解决方案