赞
踩
异构系统的数据传输,不开放数据库通过分析excel,自己构造数据库,构建程序
https://github.com/alibaba/easyexcel
快速开始:https://www.yuque.com/easyexcel/doc/easyexcel
使用
1.导入依赖
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
2.创建实体类
package com.atguigu.easyexcel.dto; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.util.Date; @Data public class ExcelStudentDTO { @ExcelProperty("姓名") private String name; @ExcelProperty("生日") private Date birthday; @ExcelProperty("薪资") private Double salary; }
3.测试使用
package com.atguigu.easyexcel.dto; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; import org.junit.Test; import java.util.ArrayList; import java.util.Date; import java.util.List; public class ExcelWriteTest { @Test public void excel(){ // 写法1 String fileName = "F:\\JavaProject\\shangrongbao\\alibaba-easyexcel\\excel\\simpleWrite" + System.currentTimeMillis() + ".xlsx"; // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 // 如果这里想使用03 则 传入excelType参数即可 EasyExcel.write(fileName, ExcelStudentDTO.class).sheet("模板").doWrite(data()); } @Test public void excelxls(){ // 写法1 String fileName = "F:\\JavaProject\\shangrongbao\\alibaba-easyexcel\\excel\\simpleWrite" + System.currentTimeMillis() + ".xsl"; // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 // 如果这里想使用03 则 传入excelType参数即可 EasyExcel.write(fileName, ExcelStudentDTO.class).excelType(ExcelTypeEnum.XLS).sheet("模板").doWrite(data()); } private List<ExcelStudentDTO> data() { List<ExcelStudentDTO> list = new ArrayList<ExcelStudentDTO>(); for (int i = 0; i < 10; i++) { ExcelStudentDTO data = new ExcelStudentDTO(); data.setName("字符串" + i); data.setBirthday(new Date()); data.setSalary(0.56); list.add(data); } return list; } }
不然报错
public class ExcelStudentDTO {
@ExcelProperty("姓名")
private String name;
@ExcelProperty("生日")
private Date birthday;
@ExcelProperty("薪资")
private Double salary;
}
读是考观察者模式的监听类实现的
我们需要先创建监听类
package com.atguigu.easyexcel.listener; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.atguigu.easyexcel.dto.ExcelStudentDTO; import lombok.extern.slf4j.Slf4j; @Slf4j public class ExcelStudentDTOListener extends AnalysisEventListener<ExcelStudentDTO> { @Override public void invoke(ExcelStudentDTO excelStudentDTO, AnalysisContext analysisContext) { //{}是占位符,用后面的数据代替 log.info("打印一句数据 {}" ,excelStudentDTO); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { log.info("数据读取完成"); } }
调用监听类测试
package com.atguigu.easyexcel.dto; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.support.ExcelTypeEnum; import com.atguigu.easyexcel.listener.ExcelStudentDTOListener; import org.junit.Test; public class ExcelReadTest { @Test public void testXlsx(){ // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去 // 写法1: String fileName = "F:\\JavaProject\\shangrongbao\\alibaba-easyexcel\\excel\\simpleWrite1631701623876.xlsx"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).sheet().doRead(); } @Test public void testLsx(){ // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去 // 写法1: String fileName = "F:\\JavaProject\\shangrongbao\\alibaba-easyexcel\\excel\\simpleWrite1631702180221.xsl"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).excelType(ExcelTypeEnum.XLS).sheet().doRead(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。