java导出Excel接口

news/2025/1/15 15:05:41/

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

java">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常用的注解,注解类的注释

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

多余不展示字段

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


http://www.ppmy.cn/news/1522138.html

相关文章

软件工程-图书管理系统的需求分析

软件需求规格说明书 目录 软件需求规格说明书 一、引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 二、任务概述 2.1目标 2.2用户特点 2.3假定和约束 三、需求规定 3.1功能划分 3.1.1系统功能组成 3.1.2功能编号和优先级 3.2功能描述 3.3性能 3.4输入输出 …

【Git 学习笔记_24】Git 使用冷门操作技巧(四)——更多实用 git 别名设置、交互式新增提交

文章目录 11.8 更多别名设置别名1&#xff1a;只查看当前分支&#xff08;git b&#xff09;别名2&#xff1a;以图表形式显示自定义格式的 git 日志&#xff08;git graph&#xff09;别名3&#xff1a;查看由于合并分支导致的冲突后仍有冲突的、待合并的文件列表&#xff08;…

spring,spring_mybatis集成

Spring概述 Spring 是一个轻量级的,IOC 和 AOP 的一站式 Java 开发框架&#xff0c;是为了简化企 业级应用开发而生的。&#xff08;整个后端框架进行管理&#xff09; Ioc 即 Inversion of Control&#xff08;控制反转 把创建对象的控制权反转给sring框架&#xff09;&…

《CounTR: Transformer-based Generalised Visual Counting》CVPR2023

摘要 本论文考虑了通用视觉对象计数问题&#xff0c;目标是开发一个计算模型&#xff0c;用于计算任意语义类别的对象数量&#xff0c;使用任意数量的“样本”&#xff08;即可能为零样本或少样本计数&#xff09;。作者提出了一个新颖的基于Transformer的架构&#xff0c;称为…

ELK学习笔记(二)——使用K8S部署Kibana8.15.0

上篇文章我们完成了&#xff0c;ES的集群部署&#xff0c;如果还没有看过上篇文章的兄弟&#xff0c;可以去看看。 ELK学习笔记&#xff08;一&#xff09;——使用K8S部署ElasticSearch8.15.0集群 话不多说&#xff0c;接下来直接进入kibana的搭建 一、下载镜像 #1、下载官方…

Echarts中国地图省市区县三级联动

NodeV14.20.0安装 # 历史版本Node下载地址 https://nodejs.org/en/download/prebuilt-installer# NodeV14.20.0配置与部署 https://nodejs.org/dist/v14.20.0/node-v14.20.0-x64.msi构建默认Vue3工程目录 npm install -g vue/cli --registryhttps://registry.npm.taobao.org …

综合案例-数据可视化-折线图

一、json数据格式 1.1 json数据格式的定义与功能 json是一种轻量级的数据交互格式&#xff0c;可以按照json指定的格式去组织和封装数据&#xff0c;json数据格式本质上是一个带有特定格式的字符串。 功能&#xff1a;json就是一种在各个编程语言中流通的数据格式&#xff0…

常用排序算法(上)

目录 前言&#xff1a; 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 堆排序 2.1 1 向下调整算法 2.1 2 建堆 2.1 3 排序 2.2 插入排序 2.1.1基本思想&#xff1a; 2.1.2直接插入排序&#xff1a; 2.1.3 插…