推荐你不固定列Excel导入导出,记得收藏

在上篇文章中,我们简单的介绍了 excel 导入导出技术实践方案,就目前而已,使用最多的开源框架主要有以下三类,分别是:

apache poi:poi是使用最广的一种导入导出框架,但是缺点也很明显,导出大数据量的时候,容易oom

easypoi:easypoi 的底层也是基于 apache poi 进行深度开发的,它主要的特点就是将更多重复的工作,全部简单化,避免编写重复的代码,最显著的特点就是导出的支持非常丰富

easyexcel:easyexcel 是阿里巴巴开源的一款 excel 解析工具,底层逻辑也是基于 apache poi 进行二次开发的,目前的应用也非常广

总的来说,easypoi 和 easyexcel 都是基于apache poi进行二次开发的。

不同点在于:

1、easypoi 在读写数据的时候,优先是先将数据写入内存,因此读写性能非常高,这种操作平时使用的时候不会出现什么问题,但是当数据量很大的时候,会出现 oom,当然它也提供了 sax 模式一行一行解析,需要自己根据当前场景来实现。

2、easyexcel 默认基于 sax 模式一行一行解析,明显降低了内存,不会出现 oom 情况,程序有过高并发场景的验证,因此整体运行比较稳定,相对于 easypoi 来说,读写性能稍慢!

3、easypoi 的 api 非常丰富,easyexcel 功能的支持,比较简单。

就小编的实际使用情况来看,easypoi 相比 easyexcel 而言,有很多的优点,尤其是他的 api 非常丰富,但是在实际使用过程中,发现在导入几千条数据的时候,有时容易发生异常,尤其是当老板使用的时候,突然蹦出这么一个异常,这个时候是没办法容忍的。

但是当改用成 easyexcel 的时候,不会出现这个问题,因此如果你经常要导入的数据量非常大,那么我推荐你使用 easyexcel。

今天,我们就以 easyexcel 框架为例,结合实际开发案例,给大家详细介绍一下 easyexcel 的使用,再下篇文章中,我们再来介绍 easypoi,可能也有理解不到位的地方,欢迎网友们批评指出!

二、程序实例

2.1、添加依赖包


  1. <dependency> 
  2.     <groupId>com.alibaba</groupId> 
  3.     <artifactId>easyexcel</artifactId> 
  4.     <version>2.2.6</version> 
  5. </dependency> 

2.2、导出 excel

easyexcel 的导出支持两种方式,一种是通过实体类注解方式来生成文件,另一种是通过动态参数化生成文件。

2.2.1、实体类注解方式生成文件

实体类注解方式生成文件,操作非常简单,只需要在对应的属性字段上添加@ExcelProperty注解,然后填写列名,配置就完成了,示例代码如下:


  1. public class UserEntity { 
  2.  
  3.     @ExcelProperty(value = "姓名"
  4.     private String name
  5.  
  6.     @ExcelProperty(value = "年龄"
  7.     private int age; 
  8.  
  9.     @DateTimeFormat("yyyy-MM-dd HH:mm:ss"
  10.     @ExcelProperty(value = "操作时间"
  11.     private Date time
  12.   
  13.  //set、get… 
  14. public static void main(String[] args) throws FileNotFoundException { 
  15.     List<UserEntity> dataList = new ArrayList<>(); 
  16.     for (int i = 0; i < 10; i++) { 
  17.         UserEntity userEntity = new UserEntity(); 
  18.         userEntity.setName("张三" + i); 
  19.         userEntity.setAge(20 + i); 
  20.         userEntity.setTime(new Date(System.currentTimeMillis() + i)); 
  21.         dataList.add(userEntity); 
  22.     } 
  23.  //定义文件输出位置 
  24.     FileOutputStream outputStream = new FileOutputStream(new File("/Users/panzhi/Documents/easyexcel-export-user1.xlsx")); 
  25.     EasyExcel.write(outputStream, UserEntity.class).sheet("用户信息").doWrite(dataList); 

运行程序,打开文件内容结果!

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章