在java poi导入Excel通用工具类示例详解
前言
本文主要给大家介绍了关于java poi导入Excel通用工具类的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
问题引入和分析
提示:如果不想看罗嗦的文章,可以直接到最后点击源码下载运行即可
最近在做一个导入Excel的功能,在做之前在百度上面查找“java通用导入Excel工具类”,没有查到,大多数都是java通用导出Excel。后来仔细想想,导出可以利用java的反射,做成通用的,放进相应的实体成员变量中,导入为什么不可以呢?也是可以的,不过在做之前我们要解决如下两个问题:
表格中的列数和顺序要和实体类中的成员变量个数和顺序一致。
表格中的列的类型要和成员变量的类型一致。
第一个问题:
列数一致可以做到,但是我们最后都是要插入数据库的。那么id是必不可少的,或者良好的习惯可能还有创建时间,创建人等信息。
所以我想到了两个办法:
封装一个Vo,只将需要的字段封装进去,并且字段顺序和表格列的顺序一致,再将vo与实体类po转化(用PropertyUtil.copy
方法);
在需要的成员变量上注入自定义注解,并且加入注解的这些字段顺序和表格列的顺序一致,利用反射得到这些字段。
这里主要利用第二个方法,因为扩展性更好
第二个问题:
获取表格数据的时候,我们要判断类型,并取得相应值,全部转化为String类型,当我们给实体类赋值的时候,利用反射获取需要的成员变量的类型,并赋值。
需求
假设我们需求的excel如下:
我们可以看做两部分:
第一部分:
第二行到第11行,为一个列表数据,共有字段5个,分别为:学号,姓名,身份证号码,性别,分数
第二部分:
第12行第五列,第12行第六列,共有字段2个,分别为:总计,平均
项目
需要导入的jar包
poi的相关jar包,主要用来处理excel
beanutils 利用反射为成员变量赋值
commons-lang String判断非空的方法,可以不用自己判断
如若maven项目导入下面的jar包
<!-- poi操作excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.8</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.8</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.8</version> </dependency> <!-- beanutils --> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.8.3</version> </dependency> <!-- commons-lang--> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
在java poi导入Excel通用工具类示例详解
下载Word文档到电脑,方便收藏和打印~
相关文章
- Java 集合框架究竟能实现哪些复杂操作?(Java集合框架能实现哪些复杂操作)
- 如何在 JAVA 中返回文件流给前端?(JAVA怎么返回文件流给前端)
- 如何确保Ruby代码的安全性:SEO优化技巧大揭秘
- Java 中 concat 函数的用法究竟是什么?(java中concat函数的用法是什么)
- 如何利用 Bootstrap 增强 Java Web 应用的交互性?(利用Bootstrap增强Java Web应用的交互性)
- 如何在 Java 中进行 PropertyGrid 的性能优化?(Java中PropertyGrid的性能优化方法)
- Java ushort 类型存在哪些安全隐患?如何进行分析?(java ushort类型的安全隐患分析 )
- Java 高并发编程的最佳实践都有哪些?(java高并发编程的最佳实践有哪些)
- Java 中如何定义一个方法?(详细教程)(java怎么定义一个方法)
- 在 Java 中,反射究竟是什么?(java中反射是什么)