From 539000d8ba806bdd1fce8eb8ecf0dade043942fa Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Mon, 31 Oct 2022 11:49:31 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E5=AE=9A=E6=97=B6=E6=8A=A5=E5=91=8A):=20?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E6=96=87=E4=BB=B6=E6=A0=BC=E5=BC=8F=E6=94=B9?= =?UTF-8?q?=E4=B8=BAxlsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/commons/utils/ExcelUtils.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/backend/src/main/java/io/dataease/commons/utils/ExcelUtils.java b/backend/src/main/java/io/dataease/commons/utils/ExcelUtils.java index 4f6fed9f0b..1602341ddb 100644 --- a/backend/src/main/java/io/dataease/commons/utils/ExcelUtils.java +++ b/backend/src/main/java/io/dataease/commons/utils/ExcelUtils.java @@ -1,7 +1,9 @@ package io.dataease.commons.utils; +import java.io.BufferedOutputStream; import java.io.File; +import cn.hutool.core.io.FileUtil; import io.dataease.commons.model.excel.ExcelSheetModel; import java.util.List; @@ -9,29 +11,24 @@ import java.util.concurrent.atomic.AtomicReference; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.FillPatternType; -import org.apache.poi.ss.usermodel.Font; -import org.apache.poi.ss.usermodel.IndexedColors; + +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelUtils { - private static final String suffix = ".xls"; + private static final String suffix = ".xlsx"; public static File exportExcel(List sheets, String fileName) throws Exception { AtomicReference realFileName = new AtomicReference<>(fileName); - HSSFWorkbook wb = new HSSFWorkbook(); + Workbook wb = new XSSFWorkbook(); sheets.forEach(sheet -> { List> details = sheet.getData(); details.add(0, sheet.getHeads()); String sheetName = sheet.getSheetName(); - HSSFSheet curSheet = wb.createSheet(sheetName); + Sheet curSheet = wb.createSheet(sheetName); if (StringUtils.isBlank(fileName)) { String cName = sheetName + suffix; realFileName.set(cName); @@ -47,11 +44,11 @@ public class ExcelUtils { if (CollectionUtils.isNotEmpty(details)) { for (int i = 0; i < details.size(); i++) { - HSSFRow row = curSheet.createRow(i); + Row row = curSheet.createRow(i); List rowData = details.get(i); if (rowData != null) { for (int j = 0; j < rowData.size(); j++) { - HSSFCell cell = row.createCell(j); + Cell cell = row.createCell(j); cell.setCellValue(rowData.get(j)); if (i == 0) {// 头部 cell.setCellStyle(cellStyle); @@ -67,7 +64,17 @@ public class ExcelUtils { realFileName.set(realFileName.get() + suffix); } File result = new File("/opt/dataease/data/" + realFileName.get()); - wb.write(result); + BufferedOutputStream outputStream = FileUtil.getOutputStream(result); + try { + wb.write(outputStream); + } catch (Exception e) { + LogUtil.error(e.getMessage(), e); + throw e; + } finally { + wb.close(); + outputStream.flush(); + outputStream.close(); + } return result; }