功能强大、使用方便的java导入excel
来源:互联网 发布:网络兼职图片 编辑:程序博客网 时间:2024/05/29 00:32
目前的excel导入开发工作量非常大。主要是写一些字段验证,还有关联表验证。不仅工作量大而且效率低,不好扩展。于是我写了下面的工具只需要写一个xml描述文件哦
这个工具功能非常强大:
1,开发工作量小。
2,使用方便
3,是否更新,是否关联表级联插入
4,扩展方便excel变动直接修改xml文档即可
5,效率高
6,验证多
使用到的技术包括:
1,java
2,spring
3,hibernate
4,json
5,xml
6,poi
下面介绍如何使用
第一步写描述文件:
描述文件如下:
根元素:描述excel对应的导入类(class),有相同记录是否更新(upate),关联表没记录是否级联插入(cascade)。为了安全建议不要更新和级联插入
子元素:跟元素下只有一种子元素column,这个元素师描述excel字段列的。顺序要与excel吻合。该元素中的属性是对字段的验证。验证内容一目了然最大长度(maxLengt),必填(required)等。 还有唯一(unique)字段作为判断是否重复,一般情况下配置一个字段即可。
<?xml version="1.0" encoding="UTF-8"?><excel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="excel2db.xsd"sheetIndex="0" startRowIndex="1" class="model.Postage" cascade="true" update="true"><column name="spareCenter.spareCenterName" maxLength="20" required="true"/><column name="spareCenter.address" maxLength="200"/> <column name="spareCenter.leader.name" maxLength="200"/> <column name="spareCenter.leader.dept.name" maxLength="200"/> <column name="postTime" format="yyyy-MM-dd HH:mm:ss"/> <column name="postNum" maxLength="20" digits="true" ><check name="number" errMsg="邮寄费用必须为小数哦!"></check></column><column name="postWeight" maxLength="20"><check name="number"></check></column><column name="postage" maxLength="20" required="true"><check name="number"></check></column><column name="insurance" maxLength="20"><check name="number"></check></column><column name="packingfee" maxLength="20"><check name="number"></check></column><column name="aimplace" maxLength="20" required="true"/><column name="placeDescription" maxLength="20" required="true"/><column name="emsCode" maxLength="20" required="true" unique="true"/><column name="remark" maxLength="200" /></excel>
第二部配置2个hibernte
第一个bean是数据库操作类把sessionFactory配进去
第二个是excel导入类要吧第一个bean配置进去,"excelImport"是默认名字也可以不使用这个名字
<bean id="commonService"class="excel2db.service.spring.CommonServiceSpringImpl"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="excelImport"class="excel2db.util.excel.ExcelImport"><property name="commonService" ref="commonService" /></bean>
第三部调用:
ExcelUtils里有很多重载方法选择一个最合适你的。第一个参数要导入excel的文件流,第二个参数文件名,第三个参数描述xml文件流,第四个excel导入类,第五个是自定义操作接口。这个接口有2个方法,第一个beforeDB可以对excel中的数据自定义验证,参数是json对象。第二个afterDB可以插入一些excel中没有的数据,参数是实际导入的对象。也可以对关联表的id验证,beforedb是没有id信息的。
Result result = ExcelUtils.excel2DB(ClassLoader.getSystemResourceAsStream("Postage.xlsx"), fileName,ClassLoader.getSystemResourceAsStream("postage.xml"),excelImport,new Excel2DB() {public String validateBeforeDB(JSONObject obj) {//可以写一些其他验证String ems = obj.getString("emsCode");if(!ems.matches("\\w+")){return "$emsCode "+"格式不正确!";}return Excel2DB.SUCCESS;}public String validateAfterDB(Object obj) {//可以添加一些excel里没有的数据,也可以做一些其他验证,对象里已经包含Id;Postage postage = (Postage) obj;if(postage.getPostId()!=null){//未修改的信息不希望丢失Postage db = service.findObjectById(Postage.class,postage.getPostId());postage.setCreatePerson(db.getCreatePerson());postage.setCreateTime(db.getCreateTime());postage.setModifyTime(new Date());postage.setModifyPerson("damengge");}else{postage.setCreateTime(new Date());postage.setCreatePerson("damengge");}return Excel2DB.SUCCESS;}});
工具jar包下载地址
工具jar包2.0下载地址(修改部分BUG,增加一些功能)
测试项目下载地址
- 功能强大、使用方便的java导入excel
- MonoRail学习笔记三:使用方便功能强大的routing功能
- MonoRail学习笔记三:使用方便功能强大的routing功能
- MonoRail学习笔记三:使用方便功能强大的routing功能
- Logger-功能强大使用方便的Log日志打印工具类
- 配置简单功能强大的excel工具类搞定excel导入导出工具类(一)
- 实现一个配置简单功能强大的excel工具类搞定excel导入导出(二)
- Java导入excel的操作
- java Excel的导入导出
- Excel的导入导出 -- java
- Java excel的导入导出
- Java POI Excel的导入
- java的Excel的导入导出功能
- java中excel文件数据的导入
- Java Excel导入功能的实现
- java web EXCEL导入的实现
- java poi组件Excel的导入导出
- Java的Excel文件导入时报错
- snmp client down, yum 卡在transaction test
- sqlite3常用命令&语法
- POJ 2342 Anniversary party
- 黑马程序员 Java 初学者要理解的问题
- java常见面试题
- 功能强大、使用方便的java导入excel
- linux自动启动程序
- OpenSSH User Enumeration Time-Based Attack
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- 动态切换数据源(spring+hibernate)
- unsigned 关键字,你真的懂了吗?
- C++,字符区别
- Font-Awesome字体在ie7上不能toggle
- 【HTML】使用iframe标签显示目标网页(内容)的指定区域