EasyExcel(读取操作和添补操作)
1.预备Read.xlsx(具有两个sheet)https://i-blog.csdnimg.cn/img_convert/d92c48cf0510104c85d01badef148079.png
2.读取第一个sheet中的数据
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class DemoData {
// 根据Excel中指定列名或列的索引读取
@ExcelProperty(value = "字符串标题")
private String name;
@ExcelProperty(value = "日期标题")
private Date hireDate;
@ExcelProperty(value = "数字标题")
private Double salary;
}
2.方法
/**
* 读取第一个sheet中的数据
*/
@Test
public void testRead01() {
// 读取文件路径
String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
// 存储解析的数据
List<DemoData> demoDataArrayList = new ArrayList<>();
// 1.创建read
ExcelReader excelReader = EasyExcel.read(fileName)
.build();
// 2.创建sheet
ReadSheet sheetOne = EasyExcel.readSheet(0)
.head(DemoData.class)
.registerReadListener(new AnalysisEventListener<DemoData>() {
@Override
public void invoke(DemoData demoData, AnalysisContext analysisContext) {
demoDataArrayList.add(demoData);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("解析完成一个sheet...");
}
})
.build();
// 参数为可变参数,可以读取多个sheet
excelReader.read(sheetOne);
// 必须关闭流,否则会出现内存泄漏
excelReader.finish();
// 输出所有解析的数据
System.out.println("所有解析的数据为:");
demoDataArrayList.forEach(System.out::println);
}
3.结果
https://i-blog.csdnimg.cn/img_convert/50c266fbe3e08c84aa95b04c8a98aae6.png
3.读取全部sheet中的数据
1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class DemoData {
// 根据Excel中指定列名或列的索引读取
@ExcelProperty(value = "字符串标题")
private String name;
@ExcelProperty(value = "日期标题")
private Date hireDate;
@ExcelProperty(value = "数字标题")
private Double salary;
}
2.方法
/**
* 读取所有sheet中的数据
*/
@Test
public void testRead02() {
// 读取文件路径
String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
// 存储解析的数据
List<DemoData> demoDataArrayList = new ArrayList<>();
// 直接使用EasyExcel读取excel
ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new AnalysisEventListener<DemoData>() {
// 每解析一行数据,该方法会被调用一次
@Override
public void invoke(DemoData demoData, AnalysisContext analysisContext) {
demoDataArrayList.add(demoData);
}
// 解析完成一个sheet后被调用
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("解析完成一个sheet...");
// 可以将解析的数据保存到数据库
}
}).build();
excelReader.readAll(); // 读所有sheet
// 必须关闭流,否则会出现内存泄漏
excelReader.finish();
// 输出所有解析的数据
System.out.println("所有解析的数据为:");
demoDataArrayList.forEach(System.out::println);
}
3.结果
https://i-blog.csdnimg.cn/img_convert/395c216fd1e9cd39e554cc950f7c55bf.png
EasyExcel添补
1.简单添补
1.预备 Fill01.xlsx
https://i-blog.csdnimg.cn/img_convert/3299f64e7d85333c9052e88723553b8e.png
2.无模版
3.方法
/**
* 简单填充
*/
@Test
public void testFill01() {
// 选择要填充的模板
String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01.xlsx";
// 选择填充后的文件
String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01_end.xlsx";
// 1.创建write
ExcelWriter excelWriter = EasyExcel.write(filledFileName)
.withTemplate(templateFileName)
.build();
// 2.创建sheet
WriteSheet writeSheet = EasyExcel.writerSheet()
.sheetNo(0)
.build();
// 3.构建数据
Map<String, Object> data = new HashMap<>();
data.put("name", "张三");
data.put("age", 20);
data.put("birthday", new Date());
// 4.填充数据
excelWriter.fill(data, writeSheet);
// 5.关闭流
excelWriter.finish();
}
4.结果
https://i-blog.csdnimg.cn/img_convert/cf0727b63e167d7327f29c21ba8cbcf1.png
2.列表添补
1.预备 Fill02.xlsx
https://i-blog.csdnimg.cn/img_convert/10b3ca6fae25e0cc6e9b2931d405cf7f.png
2.模板
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Fill02 {
private String name;
private Double number;
}
3.方法
/**
* 列表填充
*/
@Test
public void testFill02() {
// 选择要填充的模板
String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02.xlsx";
// 选择填充后的文件
String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02_end.xlsx";
// 1.创建write
ExcelWriter excelWriter = EasyExcel.write(filledFileName)
.withTemplate(templateFileName)
.build();
// 2.创建sheet
WriteSheet writeSheet = EasyExcel.writerSheet()
.sheetNo(0)
.build();
// 3.构建数据
List<Fill02> data = new ArrayList<>();
data.add(Fill02.builder()
.name("张三")
.number(100.0)
.build());
data.add(Fill02.builder()
.name("李四")
.number(200.0)
.build());
data.add(Fill02.builder()
.name("王五")
.number(300.0)
.build());
// 4.填充数据
excelWriter.fill(data, writeSheet);
// 5.关闭流
excelWriter.finish();
}
4.结果
https://i-blog.csdnimg.cn/img_convert/aff2d733af0e7fcdccc0514dbfc68d3e.png
3.组合添补
1.预备 Fill03.xlsx
https://i-blog.csdnimg.cn/img_convert/a5ffabd56983be2a74c1827f746361af.png
2.模板
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Fill03 {
private String name;
private Integer age;
}
3.方法
/**
* 组合填充
*/
@Test
public void testFill03() {
// 选择要填充的模板
String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03.xlsx";
// 选择填充后的文件
String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03_end.xlsx";
// 1.创建write
ExcelWriter excelWriter = EasyExcel.write(filledFileName)
.withTemplate(templateFileName)
.build();
// 2.创建sheet
WriteSheet writeSheet = EasyExcel.writerSheet()
.sheetNo(0)
.build();
// 3.构建数据
// 3.1 构建数据1
Map<String, Object> data1 = new HashMap<>();
data1.put("time", new Date());
data1.put("num", 2);
// 3.2 构建数据2
List<Fill03> data2 = new ArrayList<>();
data2.add(Fill03.builder().name("张三").age(20).build());
data2.add(Fill03.builder().name("李四").age(21).build());
// 填充配置,换行填充(混合填充必备配置)
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
// 4.填充数据
excelWriter.fill(data1, fillConfig, writeSheet);
excelWriter.fill(data2, fillConfig, writeSheet);
// 5.关闭流
excelWriter.finish();
}
4.结果
https://i-blog.csdnimg.cn/img_convert/093708d5bb758caba3d73c6f85a6e30b.png
4.程度添补
1.预备 Fill04.xlsx
https://i-blog.csdnimg.cn/img_convert/5d352520f583efa9e94ef22bf9954ebb.png
2.模板
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Fill04 {
private String name;
private Integer age;
}
3.方法
/**
* 水平填充
*/
@Test
public void testFill04() {
// 选择要填充的模板
String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04.xlsx";
// 选择填充后的文件
String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04_end.xlsx";
// 1.创建write
ExcelWriter excelWriter = EasyExcel.write(filledFileName)
.withTemplate(templateFileName)
.build();
// 2.创建sheet
WriteSheet writeSheet = EasyExcel.writerSheet()
.sheetNo(0)
.build();
// 3.构建数据
List<Fill04> data = new ArrayList<>();
data.add(Fill04.builder().name("张三").age(20).build());
data.add(Fill04.builder().name("李四").age(21).build());
// 填充配置,水平填充
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
// 4.填充数据
excelWriter.fill(data, fillConfig, writeSheet);
// 5.关闭流
excelWriter.finish();
}
4.结果
https://i-blog.csdnimg.cn/img_convert/0e3a43b9b2154180e10334c4732151a4.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]