首页 > 其他分享 >文件导出:Hutool 导出 Excel文件

文件导出:Hutool 导出 Excel文件

时间:2024-09-09 18:36:30浏览次数:8  
标签:文件 dto 导出 writer Excel Hutool 设备

 

使用 Hutool 实现 Excel 数据导出。

导出 Excel 文件为两个 Sheet页。

1. 设备基本信息:包括设备编号、设备名称、设备位置等。

2. 设备维护记录:包括设备维护日期、维护人员、维护内容等。

 

1. Hutool 简介

Hutool 是一个功能丰富的 Java 工具库,其中包含用于 Excel 文件处理的模块 cn.hutool.poi.excel。

在 Apache POI 的基础上进行了封装,使得 Excel 操作更加简洁易用,特别适合快速导出、导入 Excel 文件。

<!-- hutool-poi 相应依赖 -->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-poi</artifactId>
    <version>5.8.18</version> <!-- 根据最新版本号选择合适版本 -->
</dependency>

 

2. 代码实现

1) 查询数据库中的数据

 从数据库中查询设备信息和相应的维护记录。将数据转换为 DTO(数据传输对象),方便导出。

// 查询 t_device 表中的设备信息
List<DeviceEntity> deviceList = deviceMapper.findAllDevices();
// 初始化
List<DeviceExcelDto> deviceExcelDtoList = new ArrayList<>();

 

2) 遍历设备信息

 对每个设备信息(DeviceEntity),进行进一步查询其对应的维护记录(t_device_maintenance表)。将设备维护信息和维护记录封装到 DTO 对象。

// 遍历设备
for (DeviceEntity device : deviceList) {
    // 查询设备的维护记录
    List<DeviceMaintenance> maintenanceList = deviceMapper.findDeviceMaintenance(device.getId());

    // 构建设备信息 DTO
    DeviceExcelDto dto = new DeviceExcelDto();
    dto.setDeviceNumber(device.getDeviceNumber());
    dto.setDeviceName(device.getDeviceName());
    dto.setLocation(device.getLocation());
    dto.setStatus(device.getStatus());
    
    // 处理维护记录
    for (DeviceMaintenance maintenance : maintenanceList) {
        dto.setMaintenanceDate(maintenance.getDate());
        dto.setMaintenancePerson(maintenance.getPerson());
        dto.setMaintenanceContent(maintenance.getContent());
        deviceExcelDtoList.add(dto);
    }
}

 

3) 使用 Hutool 导出 Excel

使用 Hutool 的 ExcelWriter 将DTO对象写入 Excel 文件。将数据分为两个 Sheet页,Sheet1 为 设备基本信息,Sheet2 为 设备维护记录。

// 创建 ExcelWriter
ExcelWriter writer = ExcelUtil.getWriter();

// Sheet1:设备基本信息
writer.addHeaderAlias("deviceNumber", "设备编号");
writer.addHeaderAlias("deviceName", "设备名称");
writer.addHeaderAlias("location", "设备位置");
writer.addHeaderAlias("status", "使用状态");
writer.write(deviceExcelDtoList, true);
writer.renameSheet(0, "设备基本信息");    // 此处使用 renameSheet() 将 Sheet1改名,否则依然是Sheet1

// Sheet2:设备维护记录
writer.setSheet("设备维护记录");
writer.addHeaderAlias("deviceNumber", "设备编号");
writer.addHeaderAlias("maintenanceDate", "维护日期");
writer.addHeaderAlias("maintenancePerson", "维护人员");
writer.addHeaderAlias("maintenanceContent", "维护内容");
writer.write(deviceExcelDtoList, true);

 

4) 设置响应头并导出 Excel

将生成的 Excel 文件通过 Http 响应输出给用户。

try {
    fileName = URLEncoder.encode("设备管理数据", StandardCharsets.UTF_8.toString());
    response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
    ServletOutputStream outputStream = response.getOutputStream();
    writer.flush(outputStream, true);
    outputStream.close();
    writer.close();
} catch (IOException e) {
    e.printStackTrace();
}

 

 

如此便实现了一个简洁的设备信息导出功能。

首先,从数据库查询设备信息和维护信息,转为一个 TDO实体,接着使用 Hutool 的 ExcelWriter 将数据写入 Excel 文件的不同 Sheet,最后通过 HTTP 响应 将Excel文件提供。

 

3. 小结

 

Hutool 的 Excel 模块为我们提供了一个非常简便的方式来操作 Excel 文件。无论是简单的数据导出,还是复杂的多 Sheet 页,多格式导出,Hutool 都能轻松胜任。

 

 


 

标签:文件,dto,导出,writer,Excel,Hutool,设备
From: https://www.cnblogs.com/warmNest-llb/p/18405074

相关文章

  • VBA高级应用30例应用3在Excel中的ListObject对象:循环列出当前工作表中的表
    《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三......
  • 清空回收站后,文件还能找回吗?
    面对回收站相关的数据恢复时,大家往往会有一些疑问,比如文件删除后,都会在回收站吗?在回收站里删除的文件还能找回吗?回收站恢复的是哪个盘文件?今天,为大家解答。一、文件删除后,都会在回收站吗?不一定!情况下,删除的文件都会在回收站内,但是如果出现以下情况,文件是不出现在回收站的。......
  • python读配置文件配置信息
    在Python中,读取配置文件常用的库有configparser和yaml。以下是使用configparser读取INI格式配置文件的例子:首先是配置文件config.ini的内容:  [database]user=myuserpassword=mypasswordhost=localhostdb_name=mydatabase [server]port=8080接......
  • Python存储与读写二进制文件
    技术背景一般情况下我们会选择使用明文形式来存储数据,如json、txt、csv等等。如果是需要压缩率较高的存储格式,还可以选择使用hdf5或者npz等格式。还有一种比较紧凑的数据存储格式,就是直接按照二进制格式存储。这种格式下,存储的数据之间没有间隔符,在没有压缩的情况下应该是体积最......
  • 宿主机与qemu虚拟机互传文件
    ​原文:https://zhuanlan.zhihu.com/p/594235031 目录收起0背景1宿主机与qemu虚拟机互传文件2编写kodemo,做内核测试推荐阅读0背景当搭建好qemu调试arm64linux内核的环境(详见同事的文章VSCode+GDB+Qemu调试ARM64linux内......
  • 对于linux文件权限的思考
    ​ 一个文件或目录可以从权限和其所属讲起。1.从用户的创建开始​ 一个用户从创建开始就有了所属用户组,这是因为每个用户必须属于一个主组,通常在用户创建时系统会默认为其创建一个同名的主组(后续可由超级用户(root)通过修改用户的账户设置来更改主组)。​ 那么由该用户创建的文......
  • 企业文件加密软件怎么选?2024超好用的十款企业文档加密软件推荐!臻品优选!
    "数据如金需锁固,密文守护保安宁。"文件加密软件是守护企业数据安全的重要利器,选择一款适合企业自身需求的加密软件,不仅能够提升数据安全性,还能优化团队协作效率,确保业务连续性。本文特为您臻选2024年超好用的十款企业文档加密软件,助力您的企业数据在数字化浪潮中稳如磐石。......
  • 视频加密软件哪个最好用?怎么对视频文件设置加密?公司视频文件加密的最佳选择!
    视频文件是企业信息传递与存储的重要载体,这些视频文件不仅涵盖了员工培训资料、产品演示视频、客户沟通记录等关键业务内容,还可能包含商业秘密、技术专利等敏感信息。因此,确保视频文件的安全性,防止未经授权的访问、篡改或泄露,成为不可忽视的重要任务!那么,视频加密软件哪个最......
  • 如何进行文件外发管控?如何限制企业内部文件外发?一文揭晓答案
    文件外发管控的重要性:文件外发管控至关重要,它直接关系到企业信息安全与合规性。通过严格管控文件外发行为,企业能有效防止敏感信息泄露,保护核心数据资产不受侵害。这不仅有助于维护企业声誉和客户信任,还能确保业务连续性和竞争力。同时,符合法律法规要求,避免法律风险和罚款。因......
  • 企业怎样管控员工外发文件|企业如何限制内部文件被随意外发?
    在当今数字化时代,企业内部文件的安全管理成为了企业运营中不可或缺的一环。随着员工在日常工作中频繁地使用电子邮件、云存储、即时通讯工具等渠道进行信息交流和文件共享,如何有效管控员工外发文件,防止内部文件被随意外发,成为企业面临的重要挑战。本文探讨企业如何构建一套全......