totalo 5 years ago
parent
commit
89626a6563

+ 3 - 0
hutool-poi/src/main/java/cn/hutool/poi/excel/ExcelWriter.java

@@ -26,6 +26,7 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.util.CellRangeAddressList;
+import org.apache.poi.xssf.streaming.SXSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFDataValidation;
 
 import java.io.File;
@@ -268,6 +269,8 @@ public class ExcelWriter extends ExcelBase<ExcelWriter> {
 	 * @since 4.0.12
 	 */
 	public ExcelWriter autoSizeColumn(int columnIndex) {
+		SXSSFSheet sheet = (SXSSFSheet) this.sheet;
+		sheet.trackAllColumnsForAutoSizing();
 		this.sheet.autoSizeColumn(columnIndex);
 		return this;
 	}

+ 24 - 5
hutool-poi/src/test/java/cn/hutool/poi/excel/test/BigExcelWriteTest.java

@@ -16,11 +16,7 @@ import org.apache.poi.ss.usermodel.IndexedColors;
 import org.junit.Ignore;
 import org.junit.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 写出Excel单元测试
@@ -217,4 +213,27 @@ public class BigExcelWriteTest {
 			writer.write(data).flush();
 		}
 	}
+
+	@Test
+	@Ignore
+	public void issue1210() {
+		// 通过工具类创建writer
+		String path = "e:/issue1210.xlsx";
+		FileUtil.del(path);
+		BigExcelWriter writer = ExcelUtil.getBigWriter(path);
+		writer.addHeaderAlias("id", "SN");
+		writer.addHeaderAlias("userName", "User Name");
+		List<Map<String, Object>> list = new ArrayList<>();
+		list.add(new HashMap<String, Object>() {{
+			put("id", 1);
+			put("userName", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+		}});
+		list.add(new HashMap<String, Object>() {{
+			put("id", 2);
+			put("userName", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
+		}});
+		writer.write(list, true);
+		writer.autoSizeColumnAll();
+		writer.close();
+	}
 }