您的位置:

使用EasyExcel导出多个sheet表格

一、easyexcel导出多个sheet表格模板

在使用EasyExcel导出多个Sheet表格时,我们首先需要创建不同的Sheet表格模板。为此,我们可以通过 EasyExcel 的 WriteModel 模式,创建多个不同的Model并使用不同的Sheet存储在同一个Excel文件中。需要注意的是,多个Sheet在创建时,需要指定不同的Sheet名称。

public void writeSeveralSheetsWithTemplate(String filePath){
    List modelList = new ArrayList<>();
    WriteModel model1 = new WriteModel();
    model1.setName("Sheet1");
    List
   
    > data1 = new ArrayList<>();
    data1.add(Arrays.asList("姓名", "年龄", "性别"));
    model1.setData(data1);
    modelList.add(model1);

    WriteModel model2 = new WriteModel();
    model2.setName("Sheet2");
    List
     
      > 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 modelList = new ArrayList<>();
    WriteModel model1 = new WriteModel();
    model1.setName("Sheet1");
    List
   
    > 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
     
      > 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 modelList = new ArrayList<>();
    WriteModel model1 = new WriteModel();
    model1.setName("Sheet1");
    List
   
    > data1 = new ArrayList<>();
    data1.add(Arrays.asList("小明", "18", "男"));
    model1.setData(data1);
    modelList.add(model1);

    WriteModel model2 = new WriteModel();
    model2.setName("Sheet2");
    List
     
      > 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 modelList = new ArrayList<>();
    WriteModel model1 = new WriteModel();
    model1.setName("Sheet1");
    List
   
    > 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
     
      > 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()));
}