Excel 数据导入

Excel 导入:步骤:下载一个.xls的模板,下载后用户可以在模板上填写要导入的数据。填写完以后,用户通过上传填好的模板,向数据库导入数据。
一、下载 .xls模板
通过window.open() 方法,在新的窗口打开下载路径。下载模板的操作在后台控制器进行。
图示1.1:
Excel 数据导入
1、调用方法,请求后台下载模板的操作。
2、获取项目中模板文件的路径,然后通过路径判断项目中是否存有模板。有,就获取 文件名,然后以流的形式进行文件返回。
MapPath()方法 传入相对路径,将相对路径转为绝对路径。
注意:用户填写数据的模板是开发人员指定的,用户下载的模板也是开发人员存放 到项目里的。
图示1.2:
Excel 数据导入
二、文件上传
2、1、获取选择的文件,由于获取到的是一个数组,所有要获取索引为0的值。将获取 到的文件用FormData() 形式进行数据传递。然后创建XMLHttpRequest对象,
使用XMLHttpRequest对象的open方法进行提交,提交方式要用POST提交
图示1.3:
Excel 数据导入
3、获取要上传的文件后缀名,然后进行判断。判断上传的文件是否.xls的Excel文件
图示1.4:
Excel 数据导入
4、为了避免出现文件被占用(文件上传时的流如果直接NTOI使用,容易出现文件被占 用的情况),所有把上传的文件转为二进制的数组,然后再把二进制的数组转为内 存流。
图示1.5:
Excel 数据导入
5、将内存流转为工作簿,然后判断上传的文件中是否有工作表。虽然不会存在工作簿 中没有工作表,但以防万一。获取第一个工作表
图示1.6:
Excel 数据导入
6、判断表中是否有行。创建一个DataTable,方便后面读取数据。
图示1.7:
Excel 数据导入
7、获取行数。通过获取标题行获取到表格的列数
图示1.8:
Excel 数据导入
循环创建表格的列,通过遍历 标题行 中的每一个单元格,获取标题行各个单元格 的数据。将获取到的“标题行的每一列文本值”添加到DateTable中。循环条件为 列数。
StringCellValue() 提取标题行的每一列文本值
图示1.9:
Excel 数据导入
三、读取文件数据,遍历数据,保存数据
1、循环读取用户上传的数据,然后每循环一次就创建一行。循环时判断是否有空行, 有就等循环完毕再移除。
图示2.1:
Excel 数据导入
2、定义存放数据的容器 ,用来存放要导入的数据。
图示2.2:
Excel 数据导入
3、查询学生编号,然后进行判断、查重。
图示2.3:
Excel 数据导入
4、根据班级名称的值来查询班级ID
图示2.4:
Excel 数据导入
5、循环保存添加的数据到容器里。循环添加数据到定义查询重复的列表里
图示2.5:
Excel 数据导入
4、最后开启事务,保存数据
图示2.6:
Excel 数据导入