如何使用EasyExcel高效实现Excel文件的导入与导出操作?

2026-05-19 16:311阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计686个文字,预计阅读时间需要3分钟。

如何使用EasyExcel高效实现Excel文件的导入与导出操作?

简介:本文主要介绍常见的Excel分析框架,包括Apache POI和EasyExcel。其中,Apache POI已在另一篇文章中介绍过,详情可参考[Apache POI介绍链接](https://www.cnblogs.com/jasmine-e/p/16064518.)。本文将重点介绍EasyExcel。

EasyExcel:EasyExcel是阿里巴巴开源的一个Excel处理框架,用于简化Excel文件的读写操作。

如何使用EasyExcel高效实现Excel文件的导入与导出操作?

简介

 常见的Excel分析框架有Apache poi 和EasyExcel, poi在另一篇已经介绍过了,详情可以看[www.cnblogs.com/jasmine-e/p/16064518.html]。
这篇主要针对EasyExcel,它是阿里巴巴开源的一个excel处理框架,使用简单,节省内存。解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析,因此大大减少占用内存。官网:[github.com/alibaba/easyexcel]。

入门案例 一、导入pom依赖

<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> 二、创建实体类

@Data public class ExcelStudentDTO { @ExcelProperty("姓名") private String name; @ExcelProperty("生日") private Date birthday; @ExcelProperty("薪资") private Double salary; } 三、导出excel

public class ExcelWriteTest { @Test public void simpleWriteXlsx() { String fileName = "d:/excel/simpleWrite.xlsx"; //需要提前新建目录 // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 EasyExcel.write(fileName, ExcelStudentDTO.class).sheet("模板").doWrite(data()); } //辅助方法 private List<ExcelStudentDTO> data(){ List<ExcelStudentDTO> list = new ArrayList<>(); //算上标题,做多可写65536行 //超出:java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535) for (int i = 0; i < 65535; i++) { ExcelStudentDTO data = new ExcelStudentDTO(); data.setName("Helen" + i); data.setBirthday(new Date()); data.setSalary(123456.1234); list.add(data); } return list; } } 四、读取Excel - 创建监听器

@Slf4j public class ExcelStudentDTOListener extends AnalysisEventListener<ExcelStudentDTO> { /** * 这个每一条数据解析都会来调用 */ @Override public void invoke(ExcelStudentDTO data, AnalysisContext context) { log.info("解析到一条数据:{}", data); } /** * 所有数据解析完成了 都会来调用 */ @Override public void doAfterAllAnalysed(AnalysisContext context) { log.info("所有数据解析完成!"); } } - 读取数据

public class ExcelReadTest { /** * 最简单的读 */ @Test public void simpleReadXlsx() { String fileName = "d:/excel/simpleWrite.xlsx"; // 这里默认读取第一个sheet EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).sheet().doRead(); } @Test public void simpleReadXls() { String fileName = "d:/excel/simpleWrite.xls"; EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).excelType(ExcelTypeEnum.XLS).sheet().doRead(); } }

标签:导入导出

本文共计686个文字,预计阅读时间需要3分钟。

如何使用EasyExcel高效实现Excel文件的导入与导出操作?

简介:本文主要介绍常见的Excel分析框架,包括Apache POI和EasyExcel。其中,Apache POI已在另一篇文章中介绍过,详情可参考[Apache POI介绍链接](https://www.cnblogs.com/jasmine-e/p/16064518.)。本文将重点介绍EasyExcel。

EasyExcel:EasyExcel是阿里巴巴开源的一个Excel处理框架,用于简化Excel文件的读写操作。

如何使用EasyExcel高效实现Excel文件的导入与导出操作?

简介

 常见的Excel分析框架有Apache poi 和EasyExcel, poi在另一篇已经介绍过了,详情可以看[www.cnblogs.com/jasmine-e/p/16064518.html]。
这篇主要针对EasyExcel,它是阿里巴巴开源的一个excel处理框架,使用简单,节省内存。解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析,因此大大减少占用内存。官网:[github.com/alibaba/easyexcel]。

入门案例 一、导入pom依赖

<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> 二、创建实体类

@Data public class ExcelStudentDTO { @ExcelProperty("姓名") private String name; @ExcelProperty("生日") private Date birthday; @ExcelProperty("薪资") private Double salary; } 三、导出excel

public class ExcelWriteTest { @Test public void simpleWriteXlsx() { String fileName = "d:/excel/simpleWrite.xlsx"; //需要提前新建目录 // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 EasyExcel.write(fileName, ExcelStudentDTO.class).sheet("模板").doWrite(data()); } //辅助方法 private List<ExcelStudentDTO> data(){ List<ExcelStudentDTO> list = new ArrayList<>(); //算上标题,做多可写65536行 //超出:java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535) for (int i = 0; i < 65535; i++) { ExcelStudentDTO data = new ExcelStudentDTO(); data.setName("Helen" + i); data.setBirthday(new Date()); data.setSalary(123456.1234); list.add(data); } return list; } } 四、读取Excel - 创建监听器

@Slf4j public class ExcelStudentDTOListener extends AnalysisEventListener<ExcelStudentDTO> { /** * 这个每一条数据解析都会来调用 */ @Override public void invoke(ExcelStudentDTO data, AnalysisContext context) { log.info("解析到一条数据:{}", data); } /** * 所有数据解析完成了 都会来调用 */ @Override public void doAfterAllAnalysed(AnalysisContext context) { log.info("所有数据解析完成!"); } } - 读取数据

public class ExcelReadTest { /** * 最简单的读 */ @Test public void simpleReadXlsx() { String fileName = "d:/excel/simpleWrite.xlsx"; // 这里默认读取第一个sheet EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).sheet().doRead(); } @Test public void simpleReadXls() { String fileName = "d:/excel/simpleWrite.xls"; EasyExcel.read(fileName, ExcelStudentDTO.class, new ExcelStudentDTOListener()).excelType(ExcelTypeEnum.XLS).sheet().doRead(); } }

标签:导入导出