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

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

实现思路:

jspexcel导入poiSSM实战第三篇POI导入Excel Webpack

同样的道理,有了上面的思路,接下来即开始代码的实战了。

1、在实战之前,先容一下项目利用的“状态码”列举类StatusCode,“自定义Excel版本”列举类WorkBookVersion以及“通用相应类”BaseResponse如下所示:

2、接着,在ProductController开拓导入Excel的功能,个中,我在这里采取的是同步提交表单的办法(由于涉及到同步上传文件),并用MultipartHttpServletRequest充当request(目的真是为了直接获取MultipartFile属性并进行后续的文件操作-在这里顺带说一下,springmvc所有涉及到文件上传的均可以采取此要求工具同步吸收前端参数)。

3、正如上图所展示的,前面部分用于获取干系要求参数,中间才是“导入”的核心重点,即创建Workbook实例(根据后缀名选择不同的Workbook子类),如图:

接着则是封装一个Poi做事类,用于读取上传上来的Excel的内容,其思路实在便是本文最先开始的“实现思路”,即:

而实在现思路如下:

在这里我封装了一个统一处理从Excel读取出来的Cell(单元格)的内容。

4、将上面读取的到List<Product>,插入到数据库表中(采取批量插入或者一行一行插入实在都是可以的,“批量插入的Sql在数据库底层实在是一行一行实行的”)

5末了,可以看一下效果:

6、感悟:在导入Excel过程中,须要读取Excel每一行每一列的数据,而在读取到每个row每个column时,会创造excel中预先设定好的header实在便是某个entity类的字段属性,而每个row的详细取值实在便是该类每个工具实例。
浩瀚的row即List<Entity>构成了全体sheet,乃至全体Excel。

推举阅读:

1、SSM实战第一篇_SSM的整合

2、SSM实战第二篇_POI导出Excel