easyexcel填充数据字段很多,分两次填充不同字段
时间: 2023-07-20 22:34:20 浏览: 120
easyexcel.rar
好的,你可以使用EasyExcel的write方法进行填充数据。如果数据字段很多,可以考虑分批次填充不同字段,这样可以减少内存占用和提高程序性能。具体的实现方式可以参考以下步骤:
1. 定义一个ExcelWriter对象,用于创建Excel文件并写入数据。
2. 定义一个List集合,将需要填充的数据分批次添加到该集合中。数据可以按照字段进行分组。
3. 定义一个for循环,遍历List集合,每次遍历时将集合中的数据写入Excel中。可以使用EasyExcel的write方法指定需要填充的字段。
4. 在每次写入数据之后,清空List集合,释放内存。
下面是一个示例代码,以填充10个字段为例,分为两次填充不同字段:
```java
// 定义ExcelWriter对象
ExcelWriter writer = EasyExcel.write(filePath).build();
// 定义List集合
List<DataDTO> nameList = new ArrayList<>();
List<DataDTO> ageList = new ArrayList<>();
// 模拟生成10000条数据
for (int i = 0; i < 10000; i++) {
DataDTO data = new DataDTO();
data.setName("name" + i);
data.setAge(i);
data.setField1("field1-" + i);
data.setField2("field2-" + i);
data.setField3("field3-" + i);
data.setField4("field4-" + i);
data.setField5("field5-" + i);
data.setField6("field6-" + i);
data.setField7("field7-" + i);
data.setField8("field8-" + i);
data.setField9("field9-" + i);
data.setField10("field10-" + i);
// 将数据按照字段分组
nameList.add(data);
ageList.add(data);
}
// 定义分批次写入数据的数量
int batchSize = 1000;
// 定义写入数据的次数
int writeTimes = nameList.size() % batchSize == 0 ? nameList.size() / batchSize : nameList.size() / batchSize + 1;
// 分批次写入数据
for (int i = 0; i < writeTimes; i++) {
int startIndex = i * batchSize;
int endIndex = (i + 1) * batchSize;
endIndex = endIndex > nameList.size() ? nameList.size() : endIndex;
List<DataDTO> subList = nameList.subList(startIndex, endIndex);
// 写入姓名字段到Excel
writer.write(subList, EasyExcel.writerSheet(0, "Sheet1").head(DataDTO.class).includeColumnFiledNames("name").build());
// 清空List集合
subList.clear();
}
// 定义写入数据的次数
writeTimes = ageList.size() % batchSize == 0 ? ageList.size() / batchSize : ageList.size() / batchSize + 1;
// 分批次写入数据
for (int i = 0; i < writeTimes; i++) {
int startIndex = i * batchSize;
int endIndex = (i + 1) * batchSize;
endIndex = endIndex > ageList.size() ? ageList.size() : endIndex;
List<DataDTO> subList = ageList.subList(startIndex, endIndex);
// 写入年龄字段到Excel
writer.write(subList, EasyExcel.writerSheet(0, "Sheet1").head(DataDTO.class).includeColumnFiledNames("age").build());
// 清空List集合
subList.clear();
}
// 关闭ExcelWriter对象
writer.finish();
```
在上述代码中,我们将需要填充的数据存储在两个List集合中,分别按照姓名和年龄进行分组。然后使用for循环进行分批次写入数据,每次写入数据时使用includeColumnFiledNames方法指定需要填充的字段。每次写入数据之后,使用subList.clear()方法清空List集合,释放内存。这样就可以实现分批次填充不同字段了。
阅读全文