From 548bc631f02a1b1443fc55d527a13421ccc24938 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Sun, 28 Apr 2024 15:14:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E9=9B=86):=20=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=95=B0=E6=8D=AE=E9=9B=86=E6=95=B0=E6=8D=AE=E5=87=BA?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exportCenter/ExportCenterService.java | 45 +++++++++++-------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java b/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java index e1c18e6980..ff6ba41cdf 100644 --- a/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java +++ b/core/backend/src/main/java/io/dataease/service/exportCenter/ExportCenterService.java @@ -656,27 +656,20 @@ public class ExportCenterService { wb.close(); } else { Integer totalPage = (totalCount / extractPageSize) + (totalCount % extractPageSize > 0 ? 1 : 0); - List fields = new ArrayList<>(); + Workbook wb = new SXSSFWorkbook(); + FileOutputStream fileOutputStream = new FileOutputStream(dataPath + "/" + request.getFilename() + ".xlsx"); + Sheet detailsSheet = wb.createSheet("数据"); for (Integer p = 1; p < totalPage + 1; p++) { Map previewData = getPreviewData(request, p, extractPageSize, extractPageSize, null, tree); List> data = (List>) previewData.get("data"); if (p == 1L) { - Workbook wb = new SXSSFWorkbook(); - // Sheet - Sheet detailsSheet = wb.createSheet("数据"); - //给单元格设置样式 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); fields = (List) previewData.get("fields"); List header = new ArrayList<>(); @@ -700,10 +693,9 @@ public class ExportCenterService { if (rowData != null) { for (int j = 0; j < rowData.size(); j++) { Cell cell = row.createCell(j); - if (i == 0) {// 头部 + if (i == 0) { cell.setCellValue(rowData.get(j)); cell.setCellStyle(cellStyle); - //设置列的宽度 detailsSheet.setColumnWidth(j, 255 * 20); } else { if ((fields.get(j).getDeType().equals(DeTypeConstants.DE_INT) || fields.get(j).getDeType() == DeTypeConstants.DE_FLOAT) && StringUtils.isNotEmpty(rowData.get(j))) { @@ -720,10 +712,6 @@ public class ExportCenterService { } } } - try (FileOutputStream outputStream = new FileOutputStream(dataPath + "/" + request.getFilename() + ".xlsx")) { - wb.write(outputStream); - } - wb.close(); } else { List> details = new ArrayList<>(); for (Map obj : data) { @@ -734,9 +722,25 @@ public class ExportCenterService { } details.add(row); } - EasyExcel.write(dataPath + "/" + request.getFilename() + p + ".xlsx").withTemplate(dataPath + "/" + request.getFilename() + ".xlsx").sheet("数据").doWrite(details); - FileUtil.del(dataPath + "/" + request.getFilename() + ".xlsx"); - new File(dataPath + "/" + request.getFilename() + p + ".xlsx").renameTo(new File(dataPath + "/" + request.getFilename() + ".xlsx")); + int lastNum = detailsSheet.getLastRowNum(); + for (int i = 0; i < details.size(); i++) { + Row row = detailsSheet.createRow(i + lastNum + 1); + List rowData = details.get(i); + if (rowData != null) { + for (int j = 0; j < rowData.size(); j++) { + Cell cell = row.createCell(j); + if ((fields.get(j).getDeType().equals(DeTypeConstants.DE_INT) || fields.get(j).getDeType() == DeTypeConstants.DE_FLOAT) && StringUtils.isNotEmpty(rowData.get(j))) { + try { + cell.setCellValue(Double.valueOf(rowData.get(j))); + } catch (Exception e) { + LogUtil.warn("export excel data transform error"); + } + } else { + cell.setCellValue(rowData.get(j)); + } + } + } + } } exportTask.setExportStatus("IN_PROGRESS"); double exportRogress = (double) ((double) p / (double) totalPage); @@ -745,6 +749,9 @@ public class ExportCenterService { exportTask.setExportPogress(formattedResult); exportTaskMapper.updateByPrimaryKey(exportTask); } + wb.write(fileOutputStream); + fileOutputStream.close(); + wb.close(); } exportTask.setExportPogress("100"); exportTask.setExportStatus("SUCCESS");