当前位置: 首页 > news >正文

Spring Boot整合EasyExcel,动态导出表头和数据

前端页面设置了列表表头 的动态查询,用户可以自己设置那些需要关注的字段,为此,后端需要保持导出的表头与前端一致。
本文介绍如何使用spring boot+easyExcel,动态导出数据。

步骤1.设置实体类

@DatapublicclassRepairWorkOrderextendsBaseEntity{//自增主键IDprivateIntegerid;//工单号码@TableField(condition=SqlCondition.LIKE)privateStringorderNo;//设备SN@TableField(condition=SqlCondition.LIKE)privateStringdeviceSn;//设备型号@TableField(condition=SqlCondition.LIKE)privateStringdeviceModel;//设备类型privateStringdeviceType;//工单类型(0-售后工单、1-自制工单)privateIntegertype;}

步骤2.设置导出实体

@SuppressWarnings("serial")@Data@ColumnWidth(20)publicclassRepairWorkOrderExportDTO{@ExcelProperty(value="工单号")privateStringorderNo;//工单状态:0-待定性定责 1-待分配维修工程师 2-待维修测试 3-待交付 4-已完成@ExcelProperty(value="工单状态")privateStringstatusString;privateIntegerstatus;@ExcelProperty(value="设备SN")privateStringdeviceSn;//设备型号@ExcelProperty(value="设备型号")privateStringdeviceModel;//工单类型(0-售后工单、1-自制产品维修)@ExcelProperty(value="工单类型")privateStringtypeString;privateIntegertype;}

步骤3.加依赖(EasyExcel Spring Boot Starter)

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-spring-boot-starter</artifactId><version>3.3.2</version></dependency>

步骤4.动态导出工具方法

数据列表:dataList
导出表头列表:includeColumnFieldNames,这里使用LinkedHashSet,保证导出表头的顺序和传入的参数顺序一致。
响应:response

publicvoidexportDynamicExcel(List<RepairWorkOrderExportDTO>dataList,LinkedHashSet<String>includeColumnFieldNames,HttpServletResponseresponse)throwsIOException{if(ObjectUtil.isNull(dataList)){thrownewValidateException("导出参数不能为空");}if(ObjectUtil.isEmpty(includeColumnFieldNames)){thrownewValidateException("导出字段列表不能为空");}response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");StringfileName="维修工单列表_"+System.currentTimeMillis()+".xlsx";response.setHeader("Content-Disposition","attachment; filename=\""+java.net.URLEncoder.encode(fileName,"UTF-8").replaceAll("\\+","%20")+"\"");try(OutputStreamout=response.getOutputStream()){ExcelWriterBuilderwriterBuilder=EasyExcel.write(out,RepairWorkOrderExportDTO.class).includeColumnFiledNames(includeColumnFieldNames).registerWriteHandler(newLongestMatchColumnWidthStyleStrategy()).registerConverter(LocalDateStringConverter.INSTANCE)//Date日期转化工具,如无date类型可以去掉.registerConverter(LocalDateTimeStringConverter.INSTANCE)//DateTime日期转化工具,如无dateTime类型可以去掉;writerBuilder.sheet("维修工单列表").doWrite(dataList);}catch(Exceptione){log.error("导出异常",e);thrownewValidateException("导出异常");}}

步骤5.状态等字段翻译成文字

这里我就使用最简单的方法了,遍历然后翻译。

privatevoidtranslateStatus(List<RepairWorkOrderExportDTO>list){if(list==null||list.isEmpty()){return;}for(RepairWorkOrderExportDTOdto:list){if(dto==null){continue;}dto.setTypeString(dto.getType()==0?Constant.type0:Constant.type1);dto.setStatusString(STATUS_MAP.getOrDefault(dto.getStatus(),"未知状态"));IntegerwarrantyStatus=dto.getWarrantyStatus();StringdeviceType=dto.getDeviceType();if(deviceType!=null){if(ServiceOrderEnum.UAV.getDescEN().equals(dto.getDeviceType())){dto.setDeviceType(ServiceOrderEnum.UAV.getDesc());}if(ServiceOrderEnum.LOAD.getDescEN().equals(dto.getDeviceType())){dto.setDeviceType(ServiceOrderEnum.LOAD.getDesc());}if(ServiceOrderEnum.NEST.getDescEN().equals(dto.getDeviceType())){dto.setDeviceType(ServiceOrderEnum.NEST.getDesc());}}}}
http://www.cnnetsun.cn/news/1693689.html

相关文章:

  • Windows 平台 Tongsuo 国密 NTLS 编译实战:从环境搭建到库文件生成
  • 从理论到实践:基于快马平台,快速构建可落地的电商客服AI Agent
  • Cosmos平台解析:英伟达如何用世界基础模型重塑机器人及自动驾驶未来?
  • CLion运行按钮灰色问题排查与CMake配置修复指南
  • 别再手动改URDF了!用xacro.py一键转换Kinova机械臂模型(附Rviz可视化完整流程)
  • 告别文件丢失焦虑!快卫士文件备份功能重磅上线
  • 伴随状语分析
  • novel-downloader完全指南:从入门到精通的7个关键步骤
  • 多机器人系统的Port-Hamiltonian建模:从理论到实践
  • 效率倍增,使用快马生成ansible playbook自动化部署ubuntu生产服务器
  • 计算机毕业设计 | springboot线上杂货铺商城 商品日用百货购买平台(附源码)
  • 3秒获取百度网盘提取码:开源智能工具的终极解决方案
  • 别再只谈MQTT协议了!用JSON格式封装物联网数据,这5个实战场景让你秒懂
  • 别再只盯着Swin Transformer了!实测EfficientNetV2在YOLOv7上的轻量化表现与部署考量
  • Switch注入完全指南:从问题诊断到场景拓展的实践之路
  • D2RML:暗黑2重制版多账户管理与游戏多开工具的安全解决方案
  • LVGL和FreeRTOS可视化跟踪
  • dji 妙算3编译ffmpeg启用h264_nvmpi h264_nvenc硬件加速
  • ProperTree完全指南:3个步骤掌握跨平台plist文件编辑技巧
  • 财务表格模板合集|会计做账、报表分析一站式搞定
  • 首粉双拼,ia没有ua在一起,有点不规范,其余首右双拼相同
  • C++的constexpr虚函数与编译期多态在模板元编程中的探索
  • WEEX 宣布赞助职业赛车手 Carl Moon,开启 2026 赛季全球品牌合作
  • 吉他弹唱资源合集(第二辑)
  • DREAM3D完整入门指南:5步掌握材料科学数据分析开源工具
  • 基于51单片机的温控风扇(温度、PID、Proteus、原理图等)资料汇编
  • BomGw v1.0软网关后台服务程序安装说明书
  • 十一,MySQL日志篇之undo-log、redo-log、bin-log
  • 万象视界灵坛应用落地:内容审核中‘深夜办公室’等场景零样本识别实操
  • Jupyter notebook打不开本地文件,有关目录存放问题