发布时间:2026-07-21阅读(1)
数据导出是日常开发的常见功能,及将数据导出为Excel并提供下载。Java 生态存在大量的 Excel 操作类库,基于这些类库便可完成相关功能。这样,大量繁杂、无意义的代码耗费着宝贵的人力资源,大家距离 996 又近了几分,那有没有更优解呢?
1.1. 背景刚刚接到产品需求,准备为众多“列表”功能增加下载支持,简单来说就是:新增一个“导出”按钮,点击时,将列表数据导入到 Excel 并进行下载。
需求很简单,功能也很明确,接到需求后,小伙伴们着手准备:
不知道你怎么想,面对这些枯燥的体力工作,我极为反感。
1.2. 目标“懒” 是人类进步的“原动力”。手懒心不懒,让脑力解放体力!!!
设计目标如下:
- 屏蔽复杂的 API,降低使用门槛;
- 使用声明式替代编码,提升开发效率;
- 为一般场景提供通用能力,方便快速支持以下能力:
- 自定义标题
- 自定义顺序
- 支持嵌套对象
- 支持自定义格式
- 支持自定义样式
2. 快速入门2.1. 引入 starter 以及相关依赖
- 为特殊场景提供定制能力,以满足个性化需求;
首先,在 pom 文件中增加 excelasbean starter 以及 poi 依赖。
2.2. 使用 ExcelAsBeanService 完成 excel 导出
<dependency><groupId>com.geekhalo.lego</groupId><artifactId>lego-starter-excelasbean</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></dependency>其次,将 ExcelAsBeanService 注入到自己的 Sevice 中,使用 write 等一系列方法完成 数据写入。
示例代码如下:
//注入excelAsBeanService//由ExcelAsBeanAutoConfiguration完成ExcelAsBeanService的注册@AutowiredprivateExcelAsBeanServiceexcelAsBeanService;public<DextendsUser>HSSFWorkbookdownloadUser(Class<D>cls,Supplier<D>supplier){//1.准备数据List<D>users=createUser(100,supplier);//2.创建WorkbookHSSFWorkbookhssfWorkbook=newHSSFWorkbook();//3.向Sheet中写入数据this.excelAsBeanService.writheaderAndDataToSheet(hssfWorkbook,"User",cls,users);//4.返回workbookreturnhssfWorkbook;}ExcelAsBeanService 中涉及写操作包括:
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图