导入excel数据EasyExcel简介
- EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单,节省内存著称,EasyExcel在解析Excel时没有讲文件数据一次加载到内存中,而是从磁盘上一行一行读取数据,逐个解析。
- EsayExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AlaysisEventListener)
EasyExcel进行读写操作
EasyExcel进行写操作
-
引入依赖
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> </dependencies>
-
创建实体类和excel数据对应
@Data public class WriteExcel { //设置excel表头名称 @ExcelProperty("学生编号") private Integer sno; @ExcelProperty("学生姓名") private String name; }
3.写入数据
/** * @author jia * @date 2022/9/8 * @description easyExcel 往excel写入数据 */ public class WriteExcelDemo { public static void main(String[] args) { //实现excel写的操作 // 1.设置写入文件夹地址和excel名称 String fileName = "F:\\write.xlsx"; //2.调用easyExcel里面的方法实现写操作 参数 文件路径 实体类名称 EasyExcel.write(fileName, WriteExcel.class).sheet("学生列表").doWrite(getData()); //doWrite()使用完毕后会自动关闭流 } //创建一个方法,返回list集合 private static List<WriteExcel> getData(){ ArrayList<WriteExcel> excels = new ArrayList<>(); for (int i = 0; i < 10; i++) { WriteExcel excel = new WriteExcel(); excel.setName("cici"+i); excel.setSno(i); excels.add(excel); } return excels; } }
EasyExcel进行读操作
-
创建和excel对应的实体类,标记对应列关系
/** * @author jia * @date 2022/9/8 * @description 读操作 */ @Data public class ReadExcel { //设置excel表头名称 index 是列 从0-1-2... @ExcelProperty(value = "学生编号",index = 0) private Integer sno; @ExcelProperty(value = "学生姓名",index = 1) private String name; }
-
创建监听进行excel文件读取
public class ExcelListener extends AnalysisEventListener<ReadExcel> { //一行一行读取excel内容 此方法不读取表头 @Override public void invoke(ReadExcel read, AnalysisContext analysisContext) { System.out.println("+++++++++++"+read); } //读取表头内容 @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context){ System.out.println("表头:"+headMap); } //读取完成之后 @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }
-
方法调用
/** * @author jia * @date 2022/9/8 * @description 读操作 */ public class ReadExcelDemo { public static void main(String[] args) { // 实现excel读操作 String fileName = "F://write.xlsx"; //读取完毕 流会自动关闭 EasyExcel.read(fileName, ReadExcel.class,new ExcelListener()).sheet().doRead(); } }