From d6ab021200581270d63655c601aee279d14ec4a2 Mon Sep 17 00:00:00 2001 From: qjq <1766193529@qq.com> Date: Wed, 16 Oct 2024 15:20:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E6=97=B6=E9=97=B4=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=A4=9A=E4=B8=AAsheet=20=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomizeExcelController.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java index e9b39447..9d973860 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java @@ -6,7 +6,9 @@ import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO; import cn.iocoder.yudao.module.member.service.customizeExcel.CustomizeExcelService; import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.converters.longconverter.LongStringConverter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -18,9 +20,12 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.OutputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -47,4 +52,37 @@ public class CustomizeExcelController { } + + /** + * 根据时间导出多个sheet 页 + * @param list + * @param response + * @throws IOException + */ + public void exporOrderDate(List list,HttpServletResponse response) throws IOException { + Map> collect = list.stream().collect(Collectors.groupingBy(OrderExcelVO::getDayTime)); + // 按key(时间)排序,将数据按时间顺序放入列表 + List>> sortedEntries = collect.entrySet() + .stream() + .sorted(Map.Entry.comparingByKey()) // 按时间排序 + .collect(Collectors.toList()); + // 创建输出流 + try (OutputStream outputStream = response.getOutputStream(); + ExcelWriter excelWriter = EasyExcel.write(outputStream).build()) { + int sheetIndex = 0; + // 逐个创建Sheet,并写入每个时间段的数据 + for (Map.Entry> entry : sortedEntries) { + WriteSheet writeSheet = EasyExcel.writerSheet(sheetIndex, "数据 " + entry.getKey()) // 使用时间作为sheet名 + .head(OrderExcelVO.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自动列宽策略 + .build(); + // 写入数据到当前Sheet + excelWriter.write(entry.getValue(), writeSheet); + sheetIndex++; + } + // 下载EXCEL,返回给前段stream流 + excelWriter.finish(); + outputStream.flush(); + } + } } \ No newline at end of file