4.0.3 JDK8 多次写大批量,丢数据
- Dominant language
- Java
- Stars
- 6.2k
- Forks
- 532
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 42
Description
版本:
```
com.alibaba
easyexcel
4.0.3
```
JDK8,写入成功后,EXCEL中实际只有5w+条数据,预期 70W条数据
问题代码:
```
package com.yinyuhang;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.metadata.WriteSheet;
import lombok.Data;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.UUID;
public class EasyExcelPartWriterTest {
private String createNewFile() throws IOException {
String dirPath = "/tmp/" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
File dir = new File(dirPath);
if (!dir.exists()) {
boolean success = dir.mkdirs();
if (!success) {
throw new IllegalStateException("dirCreateFailed:" + dirPath);
}
}
String fileName = String.format("%s/%s.xls",
dirPath,
UUID.randomUUID().toString().replaceAll("-", ""));
File file = new File(fileName);
if (file.exists()) {
throw new IllegalStateException("FileAlreadyExists:" + fileName);
}
boolean newFile = file.createNewFile();
if (!newFile) {
throw new IllegalStateException("FileCreateFailed:" + fileName);
}
return fileName;
}
@Test
public void testMultiWrite() throws Exception {
String s = "abcdefghijklmnopqrstuvwxyz012345";
for (int i = 0; i < 8; i++) {
s += s;
}
ArrayList list = new ArrayList<>();
list.add(Item.build(s));
String fileName = createNewFile();
// 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = EasyExcel.write(fileName, Item.class).excelType(ExcelTypeEnum.XLSX).build();
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
for (int i = 0; i < 70_0000; i++) {
if (i % 1000 == 0) {
System.out.println(i);
}
list.get(0).setS(String.valueOf(i));
excelWriter.write(list, writeSheet);
}
excelWriter.finish();
}
@Data
public static class Item {
public static Item build(String val) {
Item i = new Item();
i.setS(val);
i.setA(val);
i.setB(val);
i.setC(val);
i.setD(val);
i.setE(val);
i.setF(val);
i.setG(val);
i.setH(val);
i.setI(val);
return i;
}
@ExcelProperty(value = "1")
private String s;
@ExcelProperty(value = "2")
private String a;
@ExcelProperty(value = "3")
private String b;
@ExcelProperty(value = "4")
private String c;
@ExcelProperty(value = "5")
private String d;
@ExcelProperty(value = "6")
private String e;
@ExcelProperty(value = "7")
private String f;
@ExcelProperty(value = "8")
private String g;
@ExcelProperty(value = "9")
private String h;
@ExcelProperty(value = "10")
private String i;
}
}
```
Contributor guide
Assessment
This issue has not been assessed yet.