From 37288912533ca0415ba3e14945d7d7a987392679 Mon Sep 17 00:00:00 2001 From: bourne7 Date: Wed, 7 Aug 2024 21:40:42 +0800 Subject: [PATCH] feat: Add widthRatio parameter for Excel autoSizeColumn 2 --- .../java/cn/hutool/poi/excel/BigExcelWriter.java | 13 +++++++++++-- .../java/cn/hutool/poi/excel/ExcelWriteTest.java | 14 +++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/BigExcelWriter.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/BigExcelWriter.java index a51342934..f8f86947b 100644 --- a/hutool-poi/src/main/java/cn/hutool/poi/excel/BigExcelWriter.java +++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/BigExcelWriter.java @@ -159,9 +159,18 @@ public class BigExcelWriter extends ExcelWriter { return this; } + @Override + public BigExcelWriter autoSizeColumnAll(float widthRatio) { + final SXSSFSheet sheet = (SXSSFSheet) this.sheet; + sheet.trackAllColumnsForAutoSizing(); + super.autoSizeColumnAll(widthRatio); + sheet.untrackAllColumnsForAutoSizing(); + return this; + } + @Override public ExcelWriter flush(OutputStream out, boolean isCloseOut) throws IORuntimeException { - if (false == isFlushed) { + if (!isFlushed) { isFlushed = true; return super.flush(out, isCloseOut); } @@ -170,7 +179,7 @@ public class BigExcelWriter extends ExcelWriter { @Override public void close() { - if (null != this.destFile && false == isFlushed) { + if (null != this.destFile && !isFlushed) { flush(); } diff --git a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java index 1cc00a7ab..0276f3385 100755 --- a/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java +++ b/hutool-poi/src/test/java/cn/hutool/poi/excel/ExcelWriteTest.java @@ -887,9 +887,21 @@ public class ExcelWriteTest { Map map = new LinkedHashMap<>(MAP_DATA_1); map.put("中文长度测试(符号)", "abc"); - try (ExcelWriter writer = new ExcelWriter("d:/autoSizeColumnTest.xlsx")) { + String file1 = "d:/autoSizeColumnTest.xlsx"; + String file2 = "d:/autoSizeColumnTest2.xlsx"; + + FileUtil.del(file1); + FileUtil.del(file2); + + try (ExcelWriter writer = new ExcelWriter(file1)) { + writer.writeRow(map, true); + writer.autoSizeColumnAll(2f); + } + + try (BigExcelWriter writer = new BigExcelWriter(file2)) { writer.writeRow(map, true); writer.autoSizeColumnAll(2f); } } + }