apache / apache/fesod

4.0.3 JDK8 多次写大批量,丢数据

Open
#91 3 comments 0 reactions 0 assignees View on GitHub
question
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.