一、easyexcel导出多个sheet表格模板
在使用EasyExcel导出多个Sheet表格时,我们首先需要创建不同的Sheet表格模板。为此,我们可以通过 EasyExcel 的 WriteModel 模式,创建多个不同的Model并使用不同的Sheet存储在同一个Excel文件中。需要注意的是,多个Sheet在创建时,需要指定不同的Sheet名称。
public void writeSeveralSheetsWithTemplate(String filePath){
List<WriteModel> modelList = new ArrayList<>();
WriteModel model1 = new WriteModel();
model1.setName("Sheet1");
List<List<String>> data1 = new ArrayList<>();
data1.add(Arrays.asList("姓名", "年龄", "性别"));
model1.setData(data1);
modelList.add(model1);
WriteModel model2 = new WriteModel();
model2.setName("Sheet2");
List<List<String>> data2 = new ArrayList<>();
data2.add(Arrays.asList("学科", "成绩"));
model2.setData(data2);
modelList.add(model2);
EasyExcel.write(filePath).withTemplate(templateFileName).sheet().doWrite(modelList);
}
二、easyexcel导出数据
在创建好多个Sheet表格模板后,我们需要将我们需要导出的数据填充到每一个模板中。可以通过 EasyExcel 的 WriteModel 模式,将数据填充到对应的Sheet表格中。
public void writeSeveralSheetsWithData(String filePath){
List<WriteModel> modelList = new ArrayList<>();
WriteModel model1 = new WriteModel();
model1.setName("Sheet1");
List<List<String>> data1 = new ArrayList<>();
data1.add(Arrays.asList("小明", "18", "男"));
data1.add(Arrays.asList("小红", "17", "女"));
model1.setData(data1);
modelList.add(model1);
WriteModel model2 = new WriteModel();
model2.setName("Sheet2");
List<List<String>> data2 = new ArrayList<>();
data2.add(Arrays.asList("语文", "80"));
data2.add(Arrays.asList("数学", "90"));
model2.setData(data2);
modelList.add(model2);
EasyExcel.write(filePath).withTemplate(templateFileName).sheet().doWrite(modelList);
}
三、easyexcel导出无数据
如果需要在导出Excel文件时,给一些Sheet表格添加无数据提示信息,则可以通过添加一个空的List,来实现该功能。
public void writeSeveralSheetsWithEmptyData(String filePath){
List<WriteModel> modelList = new ArrayList<>();
WriteModel model1 = new WriteModel();
model1.setName("Sheet1");
List<List<String>> data1 = new ArrayList<>();
data1.add(Arrays.asList("小明", "18", "男"));
model1.setData(data1);
modelList.add(model1);
WriteModel model2 = new WriteModel();
model2.setName("Sheet2");
List<List<String>> data2 = new ArrayList<>();
// 添加空的List
model2.setData(data2);
modelList.add(model2);
EasyExcel.write(filePath).withTemplate(templateFileName).sheet().doWrite(modelList);
}
四、easyexcel模板导出选取
通过EasyExcel,我们可以实现对指定Sheet表格数据的导出。想要实现该功能,我们需要创建指定的Sheet表格模板,并在使用时,只选取需要的Sheet表格进行数据填充并导出。
public void writeSelectedSheetsWithData(String filePath){
List<WriteModel> modelList = new ArrayList<>();
WriteModel model1 = new WriteModel();
model1.setName("Sheet1");
List<List<String>> data1 = new ArrayList<>();
data1.add(Arrays.asList("小明", "18", "男"));
data1.add(Arrays.asList("小红", "17", "女"));
model1.setData(data1);
modelList.add(model1);
WriteModel model2 = new WriteModel();
model2.setName("Sheet2");
List<List<String>> data2 = new ArrayList<>();
data2.add(Arrays.asList("语文", "80"));
data2.add(Arrays.asList("数学", "90"));
model2.setData(data2);
modelList.add(model2);
EasyExcel.write(filePath).withTemplate(templateFileName)
.sheet("Sheet1")
.doWrite(modelList.stream().filter(model -> model.getName().equals("Sheet1"))
.collect(Collectors.toList()));
}