系列文章目录
前言——POI解析Excel表格
Apache POI 是干嘛的呢
它是用来 解析 Excel表格的
解析这个表格有什么作用呢
下载地址:http://poi.apache.org/
使用场景
如果数据量大的话,客户肯定不愿意一个一个新增的,太耗时费力了
那么我们能不能直接让它导入Excel
这个来进行高效率的操作呢
这个导入功能怎么做
就涉及到今天我们所讲的POI解析Excel表格
通过导入功能把文件导入到后台,
然后解析
最后存到数据库里面
这就是导入功能后台的逻辑
所以很简单
1、我们先把文件上传到后台(前面已经讲了一键上传)
2、这里我们又会讲POI解析,使用一个框架,所以基本上区域设置的导入功能就完成一半了
POI解析Excel表格的使用
1、什么是Apache POI
Apache POI 是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能
注意:读和写的功能,我们这里是读
2、Apache POI下载地址
Apache POI下载地址
http://poi.apache.org/
其实也可以在spring里面找,不一定非得下载
spring包里面有很多依赖,其中就包括了POI解析的依赖,也可以直接用
3、POI的使用
以项目中的区域设置为例
第一步:先导入jar包,解压后,只需要导入poi-3.9-20121203.jar一个jar包即可
要监听它的事件,就需要补上一个东西
然后实现这个方法
仔细想想这个思路对吗?
文档加载完成之后,加载upload事件
所以我们要找到文档加载完成的函数
把代码写在这下面,一定要注意,不要写错
第二步:实现《区域设置页面》的一键上传
绑定一键上传
去绑定“导入”按钮
检查导入jquery和js一键上传的插件无误之后
可以导进去了,但是目前是一个表面上的东西,还没有实现逻辑,我们还需要进行下一步
第三步:配置好action,接收jsp提交的excel文件
打印一下
看看临时路径
这里写完了之后,我们还需要配置一个struts
运行看一下,看看会不会打印,如果能够打印说明已经帮我们封装好一个File对象了
有这个就说明文件已经传过来了
第四步:解析excel表格数据
传过来之后,我们就可以解析excel中的表格数据了
这个时候就需要用PIO里面jar包里面的类
接下来就是获取sheet
sheet就是工作簿,
我们这里存数据的地方是sheet1
所以我们要去获取这个sheet1
观察Sheet的源码我们可以得知,Sheet继承了迭代器,所以可以直接进行迭代
并且源码里面还提供了很多方法
那么到底该如何遍历呢?
迭代器可直接遍历,如下
测试一下:运行项目,选择文件,点击导入
第五步:将区域保存到数据库
先封装成模型,再调用service
注意这里如果直接new Region(id,province,city,district,postcode)报错的话,看下model里面,需要重构一下
切记无参构造也要加上
如果有参构造和无参构造都不加的话,就用set赋值,不要使用有参构造函数的方式去给对象赋值
即
接下来就是调用service
而这个前提就是三层(剩余的service、dao层)里面看看写了没有
没写的话,我们整一下这个套路
然后再写实现类,都照搬就好
这里不赘述了
dao层和service层写完之后
action就可以调用了
直接调用就可以了吗
其实不行
要过滤掉这个,直接调用不行,那么怎么解决呢?
这时候就需要List 了
这个方法,写在公共里面更好,以后说不定还要用
List 是属于集合的,所以可以直接用
然后测试一下看看
如果多加2条数据
然后点击导入,将文件导进来
因为是循环,我们可以从控制台看到很多SQL语句
数据成功进来了,这个就说明成功了
注意这里如果没有SUCCESS的常量给你提示出来的话
就是没有实现这个
实现一下即可,如下
然后就要配置一下struts
又可以再测试一下
再导入一次
确实能够回到页面,但是页面的数据并没有更新
怎么更新表格数据呢?
表格数据显示
会想一下,我们修改取派员的时候是不是也是一样
但是我们的表格是转换成json才行的
这里也是一样,步骤如下
页码可以改小一点
拷贝过来改一改,注意不要漏掉前端返回的那两个属性
下面就是写这个 regionService
又是跟之前的staff一样,复制粘贴就行了
这里不赘述了,重复性工作,看懂了前面的这里肯定会
可以参考我的文章,上一篇
文章浏览
博文管理
总结
一共5步
第一步:先导入jar包,解压后,只需要导入poi-3.9-20121203.jar一个jar包即可
第二步:实现《区域设置页面》的一键上传
第三步:配置好action,接收jsp提交的excel文件
第四步:解析excel表格数据
第五步:将区域保存到数据库