码迷,mamicode.com
首页 > 其他好文 > 详细

基于SSM的POI导入导出Excel实战第二篇-导入EXCEL

时间:2018-07-20 00:20:42      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:上传   response   后缀   方式   version   http   上传文件   属性   res   

业务需求:上文已经实现了产品信息Excel的导出,接下来将用POI实现Excel导入

需求分析:导入其实是导出的逆过程,数据格式是一样的,均为矩阵式(二维)的数据格式,下面将以导出的模板作为Excel导入时数据填充的文件!

技术分享图片

下面就直接进入正文,在阅读正文源码期间如果有相关问题可以加我QQ:1974544863 咨询我 或者加群:583522159 进行技术讨论。下面是我的个人公众号,感兴趣的童鞋可以关注(有干货以及项目实战分享哦)
技术分享图片

好了,让我们进入代码实战吧!

  1. 在实战之前,介绍一下项目使用的“状态码”枚举类StatusCode,“自定义Excel版本”枚举类WorkBookVersion以及“通用响应类”BaseResponse如下所示:
    技术分享图片

技术分享图片

技术分享图片

  1. 接着,在ProductController开发导入Excel的功能,其中,我在这里采用的是同步提交表单的方式(因为涉及到同步上传文件),并用MultipartHttpServletRequest充当request(目的真是为了直接获取MultipartFile属性并进行后续的文件操作-在这里顺带说一下,springmvc所有涉及到文件上传的均可以采用此请求对象同步接收前端参数)
    技术分享图片

  2. 正如上图所展示的,前面部分用于获取相关请求参数,中间才是“导入”的核心重点,即创建Workbook实例(根据后缀名选择不同的Workbook子类),如图
    技术分享图片

接着则是封装一个Poi服务类,用于读取上传上来的Excel的内容,其思路其实就是本文最先开始的“实现思路”,即:
技术分享图片

而其实现思路如下:
技术分享图片

在这里我封装了一个统一处理从Excel读取出来的Cell(单元格)的内容:
技术分享图片

  1. 将上面读取的到List<Product>,插入到数据库表中(采用批量插入或者一行一行插入其实都是可以的,“批量插入的Sql在数据库底层其实是一行一行执行的”)
  2. 最后,可以看一下效果:
    技术分享图片

技术分享图片

感悟:在导入Excel过程中,需要读取Excel每一行每一列的数据,而在读取到每个row每个column时,会发现excel中预先设定好的header其实就是某个entity类的字段属性,而每个row的具体取值其实就是该类每个对象实例。众多的row即List<Entity>构成了整个sheet,乃至整个Excel

好了,POI导入Excel就介绍到这里吧,有相关问题可以加我上面个人QQ或者群咨询我哦!!

基于SSM的POI导入导出Excel实战第二篇-导入EXCEL

标签:上传   response   后缀   方式   version   http   上传文件   属性   res   

原文地址:http://blog.51cto.com/13877966/2147430

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!