easyexcel 多层循环
时间: 2023-11-04 21:58:24 浏览: 130
Easy可以通过使用fe指令实现多层循环。在fe指令中,可以指定一个集合作为数据源,然后在fe指令块中使用该集合的属性进行循环操作。例如,可以使用fe指令在Excel中创建多个行,并在每行中填充不同的数据。
以下是实现多层循环的示例代码:
```java
// 创建ExcelWriter对象
ExcelWriter excelWriter = EasyExcel.write("output.xlsx").build();
// 创建WriteSheet对象
WriteSheet writeSheet = EasyExcel.writerSheet().build();
// 创建数据源
List<AcctExcel> data = getData();
// 使用fe指令进行多层循环
excelWriter.fill(new FillWrapper("data", data), writeSheet);
// 关闭流
excelWriter.finish();
```
在上面的示例中,我们创建了一个名为"data"的fe指令块,并将数据源设置为名为"data"的集合。每个数据对象都包含一个名为"collList"的集合属性,我们可以在fe指令块中使用"collList"属性进行更深层次的循环。
需要注意的是,模板文件中需要预先定义好fe指令块和对应的占位符。fe指令块的命名可以根据需要自定义,但是模板文件中的占位符必须与填充数据的方法中的参数名称相对应。
相关问题
easyexcel 双层循环填充
好的!关于在 EasyExcel 中进行双层循环填充的问题,您可以按照以下步骤进行操作:
1. 首先导入 EasyExcel 相关的包:
```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
```
2. 创建一个实体类,用于存储需要填充的数据:
```java
public class Data {
private String category;
private String item;
// 构造方法、getters 和 setters 略
}
```
3. 创建一个方法来进行填充操作:
```java
public void fillData(List<Data> dataList) {
String fileName = "path/to/excel/file.xlsx"; // 设置保存的文件路径和名称
ExcelWriterBuilder writerBuilder = EasyExcel.write(fileName); // 创建 ExcelWriterBuilder 对象
ExcelWriterSheetBuilder sheetBuilder = writerBuilder.sheet(); // 创建 ExcelWriterSheetBuilder 对象
// 外层循环,遍历 category 列
for (Data data : dataList) {
String category = data.getCategory();
List<Data> filteredList = dataList.stream()
.filter(d -> d.getCategory().equals(category))
.collect(Collectors.toList());
// 内层循环,遍历 item 列
for (int i = 0; i < filteredList.size(); i++) {
Data itemData = filteredList.get(i);
String item = itemData.getItem();
// 填充单元格数据
sheetBuilder.row(i)
.cell(0, item)
.cell(1, category)
.cell(2, i + 1)
.doWrite();
}
}
writerBuilder.finish(); // 完成写入操作,保存文件
}
```
4. 调用该方法并传入需要填充的数据:
```java
List<Data> dataList = new ArrayList<>();
// 添加需要填充的数据到 dataList 中
fillData(dataList);
```
以上是在 EasyExcel 中进行双层循环填充的基本步骤。您可以根据自己的需求进行调整和扩展。
请问还有其他问题吗?
EasyExcel中WriteSheet循环写入
EasyExcel中可以通过循环写入的方式批量写入数据到Excel中,可以按照以下步骤进行操作:
1. 创建Workbook对象并指定输出路径
```java
String fileName = "output.xlsx";
String filePath = "D:/";
File file = new File(filePath + fileName);
if (!file.exists()) {
file.createNewFile();
}
OutputStream outputStream = new FileOutputStream(file);
ExcelWriter excelWriter = EasyExcel.write(outputStream).build();
```
2. 定义数据集合并设置每个Sheet的名称
```java
List<List<Object>> sheet1Data = new ArrayList<>();
List<List<Object>> sheet2Data = new ArrayList<>();
List<List<Object>> sheet3Data = new ArrayList<>();
// 在数据集合中添加数据
List<List<Object>> sheetDataList = new ArrayList<>();
sheetDataList.add(sheet1Data);
sheetDataList.add(sheet2Data);
sheetDataList.add(sheet3Data);
List<String> sheetNames = new ArrayList<>();
sheetNames.add("Sheet1");
sheetNames.add("Sheet2");
sheetNames.add("Sheet3");
```
3. 循环创建WriteSheet对象,并将数据写入到每个Sheet中
```java
for (int i = 0; i < sheetNames.size(); i++) {
WriteSheet writeSheet = EasyExcel.writerSheet(i, sheetNames.get(i)).build();
excelWriter.write(sheetDataList.get(i), writeSheet);
}
```
4. 最后关闭流和excelWriter对象
```java
excelWriter.finish();
outputStream.close();
```
这样就可以通过循环写入的方式批量写入数据到Excel中了。在循环过程中,可以根据实际需求创建多个WriteSheet对象,并指定每个Sheet的名称和数据。