From ff11752b16d44914ff62457f1d4535c8c88b3c98 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 29 Jul 2024 17:19:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B5=8C=E5=85=A5=E5=BC=8F=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=B8=AD=E5=AF=BC=E5=87=BA=E4=BB=AA=E8=A1=A8=E6=9D=BF?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E6=95=B0=E6=8D=AE=E4=B8=BAExcel=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=90=8E=E6=95=B0=E6=8D=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chart/server/ChartDataServer.java | 108 +++++++++--------- .../visualized/data/dataset/ExportExcel.vue | 37 +++--- 2 files changed, 76 insertions(+), 69 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java index 9952a6ed1b..dec6fb8a1b 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java @@ -89,67 +89,67 @@ public class ChartDataServer implements ChartDataApi { public void innerExportDetails(ChartExcelRequest request, HttpServletResponse response) throws Exception { HttpServletRequest httpServletRequest = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String linkToken = httpServletRequest.getHeader(AuthConstant.LINK_TOKEN_KEY); - if (StringUtils.isEmpty(linkToken) || !request.isDataEaseBi()) { - exportCenterManage.addTask(request.getViewId(), "chart", request); - return; - } - OutputStream outputStream = response.getOutputStream(); - try { - findExcelData(request); + if ((StringUtils.isNotEmpty(linkToken) && !request.isDataEaseBi()) || (request.isDataEaseBi() && StringUtils.isEmpty(linkToken))) { + OutputStream outputStream = response.getOutputStream(); + try { + findExcelData(request); + Workbook wb = new SXSSFWorkbook(); - Workbook wb = new SXSSFWorkbook(); + //给单元格设置样式 + CellStyle cellStyle = wb.createCellStyle(); + Font font = wb.createFont(); + //设置字体大小 + font.setFontHeightInPoints((short) 12); + //设置字体加粗 + font.setBold(true); + //给字体设置样式 + cellStyle.setFont(font); + //设置单元格背景颜色 + cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); + //设置单元格填充样式(使用纯色背景颜色填充) + cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - //给单元格设置样式 - CellStyle cellStyle = wb.createCellStyle(); - Font font = wb.createFont(); - //设置字体大小 - font.setFontHeightInPoints((short) 12); - //设置字体加粗 - font.setBold(true); - //给字体设置样式 - cellStyle.setFont(font); - //设置单元格背景颜色 - cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); - //设置单元格填充样式(使用纯色背景颜色填充) - cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); - - if (CollectionUtils.isEmpty(request.getMultiInfo())) { - List details = request.getDetails(); - Integer[] excelTypes = request.getExcelTypes(); - details.add(0, request.getHeader()); - ViewDetailField[] detailFields = request.getDetailFields(); - Object[] header = request.getHeader(); - - //明细sheet - Sheet detailsSheet = wb.createSheet("数据"); - - setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes); - } else { - //多个sheet - for (int i = 0; i < request.getMultiInfo().size(); i++) { - ChartExcelRequestInner requestInner = request.getMultiInfo().get(i); - - List details = requestInner.getDetails(); - Integer[] excelTypes = requestInner.getExcelTypes(); - details.add(0, requestInner.getHeader()); - ViewDetailField[] detailFields = requestInner.getDetailFields(); - Object[] header = requestInner.getHeader(); + if (CollectionUtils.isEmpty(request.getMultiInfo())) { + List details = request.getDetails(); + Integer[] excelTypes = request.getExcelTypes(); + details.add(0, request.getHeader()); + ViewDetailField[] detailFields = request.getDetailFields(); + Object[] header = request.getHeader(); //明细sheet - Sheet detailsSheet = wb.createSheet("数据 " + (i + 1)); + Sheet detailsSheet = wb.createSheet("数据"); setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes); - } - } + } else { + //多个sheet + for (int i = 0; i < request.getMultiInfo().size(); i++) { + ChartExcelRequestInner requestInner = request.getMultiInfo().get(i); - response.setContentType("application/vnd.ms-excel"); - //文件名称 - response.setHeader("Content-disposition", "attachment;filename=" + request.getViewName() + ".xlsx"); - wb.write(outputStream); - outputStream.flush(); - outputStream.close(); - } catch (Exception e) { - DEException.throwException(e); + List details = requestInner.getDetails(); + Integer[] excelTypes = requestInner.getExcelTypes(); + details.add(0, requestInner.getHeader()); + ViewDetailField[] detailFields = requestInner.getDetailFields(); + Object[] header = requestInner.getHeader(); + + //明细sheet + Sheet detailsSheet = wb.createSheet("数据 " + (i + 1)); + + setExcelData(detailsSheet, cellStyle, header, details, detailFields, excelTypes); + } + } + + response.setContentType("application/vnd.ms-excel"); + //文件名称 + response.setHeader("Content-disposition", "attachment;filename=" + request.getViewName() + ".xlsx"); + wb.write(outputStream); + outputStream.flush(); + outputStream.close(); + } catch (Exception e) { + DEException.throwException(e); + } + }else { + exportCenterManage.addTask(request.getViewId(), "chart", request); + return; } } diff --git a/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue b/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue index 95eedc8230..be9d907b38 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/ExportExcel.vue @@ -1,5 +1,5 @@