最近做了一个项目,项目的基本环境是strut2+spring,里面有个excel导入。由于以前没有写过文件导入,大概花了2.5天的时间弄完。
在excel导入中,主要用了一个名叫poi(写项目时poi最新jar3.7)的插件。
项目中主要引用了一下几个jar:
其中前面7个jar都是poi自带的。最后个jar是Apache里面的一个反射用到的jar。
在excel导入中,首先是先把excel上传到服务器上,代码如下:
上面这段代码主要是将excel上传到服务器上,由于时间比较的及,最后并没有吧这些代码封装起来,就直接写在action中。
为了让自己的写的东西实用性比较的大,因此采用了一些Java的反射机制,首先,写了一个配置的xml文件,在这个地方有个缺陷,就是只能读取特定路径的配置文件,配置文件在src目录下,路径:src/xlsConfig/xlsLoad2DB.xml,配置文件的作用是记录excel的单元格与JavaBean里面的变量相对应,和一些基本的验证操作。xml配置如下:
在此之后,写了一个读取xlsLoad2DB.xml的类,代码如下:
基本准备工作完成,接下来就是从服务器上读取excel文件,并以JavaBean的方式存入list返回,此时便是poi大显神威的时候:
在以上操作完成之后,便拿出list并把list中的数据存入数据库,整个完整的流程就是在下面这个方法中完成,即action:
在此多写几句,由于本人是第一次写blog,整个思路比较的乱。而且代码也没有完全的整理清楚,因为这里面有很多自己的代码,没有很好的把工具独立出来。如果有哪位朋友需要用到本人的这个例子,主要关注第一段上传的代码和最后一段整个action的代码,其余代码都可copy进入项目中,如果使用我的导入就只需要做一下几点:1、在xlsLoad2DB.xml配置JavaBean与excel之间的对应关系,2、在action中把List中的Javabean写成对应的Javabean。
当然代码里面还是有很多需要改进的地方。曾经和同事讨论过几个问题,第一excel文件是在客户端中用js读出流然后把流传给服务器还是像我现在的这样先把文件上传到服务器的临时文件夹,然后再从服务器上把文件读取出来;第二,JavaBean的配置文件不能换并且不能换路径。