Open LiJunYi2 opened 8 months ago
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
public class MultiSheetFillExample {
@Data
public static class User {
private Long id;
private String name;
private String sex;
private Integer age;
}
@Data
public static class UserSheet1 {
private Long id;
private String name;
}
@Data
public static class UserSheet2 {
private Long id;
private String sex;
}
@Data
public static class UserSheet3 {
private Long id;
private Integer age;
}
public static void main(String[] args) {
String fileName = "multi_sheet_fill.xlsx";
String templateFileName = "template.xlsx";
// 模拟数据
List<User> userList = new ArrayList<>();
userList.add(new User(1L, "Alice", "Female", 20));
userList.add(new User(2L, "Bob", "Male", 25));
// 转换为不同的 sheet 数据
List<UserSheet1> userSheet1List = new ArrayList<>();
List<UserSheet2> userSheet2List = new ArrayList<>();
List<UserSheet3> userSheet3List = new ArrayList<>();
for (User user : userList) {
UserSheet1 userSheet1 = new UserSheet1();
userSheet1.setId(user.getId());
userSheet1.setName(user.getName());
userSheet1List.add(userSheet1);
UserSheet2 userSheet2 = new UserSheet2();
userSheet2.setId(user.getId());
userSheet2.setSex(user.getSex());
userSheet2List.add(userSheet2);
UserSheet3 userSheet3 = new UserSheet3();
userSheet3.setId(user.getId());
userSheet3.setAge(user.getAge());
userSheet3List.add(userSheet3);
}
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "Sheet1").head(UserSheet1.class).build();
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "Sheet2").head(UserSheet2.class).build();
WriteSheet writeSheet3 = EasyExcel.writerSheet(2, "Sheet3").head(UserSheet3.class).build();
// 填充不同的 sheet
excelWriter.fill(userSheet1List, writeSheet1);
excelWriter.fill(userSheet2List, writeSheet2);
excelWriter.fill(userSheet3List, writeSheet3);
}
}
}
建议先去看文档
快速开始 、常见问题
异常代码
异常提示
无异常
问题描述
需求是,有一个excel模版,模版中有多个 sheet,每个 sheet 中的表头不一样,但是都是同个对象的属性。 例如:user对象有id name,sex,age属性,sheet1 表头是 id ,name;sheet2表头是id,sex;sheet3 表头为id,age; 现在根据文档重复多次写入写到单个或者多个sheet 来操作,上述情况下,不能将数据准确完整的填充。但是如果我将 sheet2-3删除,分别填充又是可以的。请问是不支持这种填充方式还是我哪里需要进行修改?谢谢~