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

java导出Excel接口

需求:需要实现一个导出的接口,点导出同时导出5个Excel表格,五种表格的数据筛选不同数据

public String export(MarketReceiveVo query) {Date winApprovalStartDate = query.getWinApprovalStartDate();Date winApprovalEndDate = query.getWinApprovalEndDate();SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");String winApprovalStartDateStr = sdf.format(winApprovalStartDate);String winApprovalEndDateStr = sdf.format(winApprovalEndDate);// 根据日期获取团队详细信息List<MarketXxxxListVo> allAchievementExport = marketSysFrameworkService.getAllAchievement(winApprovalStartDate, winApprovalEndDate);//所有的List<MarketXxxxListVo> gManagerExportVo = marketSysFrameworkService.getGManager(winApprovalStartDate, winApprovalEndDate);// 副总的数据List<MarketXxxxListVo> leaderExports = marketSysFrameworkService.getLeaderExports(winApprovalStartDate, winApprovalEndDate);// 组长的数据List<MarketXxxxListVo> TeamMemberExport = marketSysFrameworkService.getTeamMemberExport(winApprovalStartDate, winApprovalEndDate);// 组员的数据List<MarketXxxxListVo> marketAchievementExport = marketSysFrameworkService.getDetailed(winApprovalStartDate, winApprovalEndDate); // 分配明细// 数据转换List<AllAchievementExportVo> exportVos = Optional.ofNullable(allAchievementExport).orElse(new ArrayList<>()).stream().map(source -> BeanUtil.convert(source, AllAchievementExportVo.class)).collect(Collectors.toList());List<GManagerExportVo> exportVosGManager = Optional.ofNullable(gManagerExportVo).orElse(new ArrayList<>()).stream().map(source -> BeanUtil.convert(source, GManagerExportVo.class)).collect(Collectors.toList()); //副总List<AllAchievementExportVo> exportVosGroupLeader = Optional.ofNullable(leaderExports).orElse(new ArrayList<>()).stream().map(source -> BeanUtil.convert(source, AllAchievementExportVo.class)).collect(Collectors.toList());List<AllAchievementExportVo> exportVosStaff = Optional.ofNullable(TeamMemberExport).orElse(new ArrayList<>()).stream().map(source -> BeanUtil.convert(source, AllAchievementExportVo.class)).collect(Collectors.toList());List<MarketAchievementExportVo> exportVosFive = Optional.ofNullable(marketAchievementExport).orElse(new ArrayList<>()).stream().map(source -> BeanUtil.convert(source, MarketAchievementExportVo.class)).collect(Collectors.toList());// 排序List<AllAchievementExportVo> sortedAll = sortData(exportVos);List<GManagerExportVo> sortedGManager = sortDataGManager(exportVosGManager);List<AllAchievementExportVo> sortedGroupLeader = sortData(exportVosGroupLeader);List<AllAchievementExportVo> sortedStaff = sortData(exportVosStaff);List<MarketAchievementExportVo> sortedDetailed= sortDataDetailed(exportVosFive);try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {ExcelWriter writeWorkbook = EasyExcel.write(outputStream).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();// 创建5个SheetWriteSheet writeSheetAll = EasyExcel.writerSheet("所有人排名").head(AllAchievementExportVo.class).build();writeWorkbook.write(sortedAll, writeSheetAll);WriteSheet writeSheetGManager = EasyExcel.writerSheet("营销副总排名").head(GManagerExportVo.class).build();writeWorkbook.write(sortedGManager, writeSheetGManager);WriteSheet writeSheetAllThree = EasyExcel.writerSheet("组长排名").head(AllAchievementExportVo.class).build();writeWorkbook.write(sortedGroupLeader, writeSheetAllThree);WriteSheet writeSheetFour = EasyExcel.writerSheet("组员排名").head(AllAchievementExportVo.class).build();writeWorkbook.write(sortedStaff, writeSheetFour);WriteSheet writeSheetDetailed = EasyExcel.writerSheet("业绩分配明细").head(MarketAchievementExportVo.class).build();writeWorkbook.write(sortedDetailed, writeSheetDetailed);writeWorkbook.finish();try (ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray())) {FileInfo fileInfo = whaleClientConfig.getWhalefsClient().upload(whaleClientConfig.getBucketName(), "tmp/" + "业绩分配" + winApprovalStartDateStr + "-" + winApprovalEndDateStr + ".xlsx", inputStream, true);return fileInfo.getUrl();}} catch (Exception e) {e.printStackTrace();log.error(String.format("业绩分配导出错误, 参数:[%s]", JSONObject.toJSONString(query)));log.error(String.format("业绩分配导出错误, 错误信息:[%s]", e.getMessage()));throw new BusinessException("导出Excel错误");}}

要注意导出类的实体Vo,对于一些Excel常用的注解,注解类的注释

@ApiModelProperty(value = "序号")@TableId(type = IdType.AUTO)@ExcelProperty(value = "序号",index = 0)private Integer index;

多余不展示字段

@ApiModelProperty(value = "上报通过开始日期")@DateTimeFormat("yyyy-MM-dd")@ExcelIgnoreprivate Date winApprovalStartDate;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 恒润达生无商业化持续亏损,现金流连年为负募资超25亿
  • git进阶·团队开发的时候为何要创建临时分支来修复bug
  • 压缩大型语言模型 LLMs
  • 简单的棒棒图绘制教程
  • 【Android】最好用的网络库:Retrofit
  • wma格式怎么转换mp3?3个方法,一次解决音频转换烦恼
  • vrrp协议,主备路由器的选举
  • Webpack和Vite对比,Webpack会被Vite取代吗?
  • vue3+vite+ts如何使用路由
  • 点餐收银小程序
  • HTTP 一、基础知识
  • linux-squid代理服务器
  • 智慧能源系统解决方案(Doc)
  • 版本控制系统Git/Gitlab/GitHub
  • 常用企业技术架构开发速查工具列表
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【css3】浏览器内核及其兼容性
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • es6要点
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Invalidate和postInvalidate的区别
  • iOS 系统授权开发
  • Python_网络编程
  • Python3爬取英雄联盟英雄皮肤大图
  • React组件设计模式(一)
  • v-if和v-for连用出现的问题
  • 排序(1):冒泡排序
  • 普通函数和构造函数的区别
  • 删除表内多余的重复数据
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 通过git安装npm私有模块
  • 系统认识JavaScript正则表达式
  • 小李飞刀:SQL题目刷起来!
  • nb
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #stm32整理(一)flash读写
  • #考研#计算机文化知识1(局域网及网络互联)
  • #每日一题合集#牛客JZ23-JZ33
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (1)(1.13) SiK无线电高级配置(五)
  • (2)STM32单片机上位机
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (九)信息融合方式简介
  • (力扣题库)跳跃游戏II(c++)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (杂交版)植物大战僵尸
  • (转)Mysql的优化设置
  • (转)Sublime Text3配置Lua运行环境
  • ./和../以及/和~之间的区别
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)