mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix big excel writer bug
This commit is contained in:
@@ -3,6 +3,7 @@ package cn.hutool.poi.excel;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.xssf.streaming.SXSSFSheet;
|
||||
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||||
|
||||
import java.io.File;
|
||||
@@ -122,6 +123,24 @@ public class BigExcelWriter extends ExcelWriter {
|
||||
|
||||
// -------------------------------------------------------------------------- Constructor end
|
||||
|
||||
@Override
|
||||
public BigExcelWriter autoSizeColumn(int columnIndex) {
|
||||
final SXSSFSheet sheet = (SXSSFSheet)this.sheet;
|
||||
sheet.trackColumnForAutoSizing(columnIndex);
|
||||
super.autoSizeColumn(columnIndex);
|
||||
sheet.untrackColumnForAutoSizing(columnIndex);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigExcelWriter autoSizeColumnAll() {
|
||||
final SXSSFSheet sheet = (SXSSFSheet)this.sheet;
|
||||
sheet.trackAllColumnsForAutoSizing();
|
||||
super.autoSizeColumnAll();
|
||||
sheet.untrackAllColumnsForAutoSizing();
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExcelWriter flush(OutputStream out, boolean isCloseOut) throws IORuntimeException {
|
||||
if(false == isFlushed){
|
||||
|
@@ -18,6 +18,7 @@ import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -217,4 +218,35 @@ public class BigExcelWriteTest {
|
||||
writer.write(data).flush();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void issue1210() {
|
||||
// 通过工具类创建writer
|
||||
String path = "d:/test/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>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
{
|
||||
put("id", 1);
|
||||
put("userName", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
|
||||
}});
|
||||
|
||||
list.add(new HashMap<String, Object>() {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
{
|
||||
put("id", 2);
|
||||
put("userName", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
|
||||
}});
|
||||
writer.write(list, true);
|
||||
writer.autoSizeColumnAll();
|
||||
writer.close();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user