导入Excel表格数据(一)

开发工具与关键技术:VS+导入Excel表格
作者: 李伙
撰写时间: 2019年6月3日

在学习MVC过程中,如果我们需要录入某条数据时可以利用新增的方法把我们的数据录入进去,而录入的数据比较多的时候,一条一条的录入会比较麻烦,所以我们可以在VS中写一个方法就可以一次性录入多条数据了。即导入Excel表格数据到数据库中,这样会节省我们的时间。接下来看看如何导入Excel表格数据的。
导入Excel表格数据(一)_第1张图片
如上图所示:因为还没把Excel表格数据保存到数据库中,所以首先要把上传的数据保存到临时表中。这个临时表其实也是用table标签来装的,所以就不显示html的代码了。然后就是一个if判断语句,是为了避免取消选择文件后触发上传,然后就是提交表单了,可以看出我们是用到ajaxSubmit()方法来提交表单的。ajaxSubmit()提交表单:我们直接通过form提交的话,提交后当前页面跳转到form的action所指向的页面。然而,很多时候我们并不希望提交表单后页面跳转,那么,我们就可以使用ajaxSubmit(obj)来提交数据。ajaxSubmit(obj)方法是jQuery的一个插件jquery.form.js里面的方法,所以使用此方法需要先引入这个插件。导入到临时表后就启动保存到数据库的按钮,因为在未导入数据之前我们是把保存到数据库的按钮给禁用的,所以导入数据后就可以启动保存到数据库的按钮了。然后就是表格数据的重载,也就是刷新表格。
导入Excel表格数据(一)_第2张图片
如上图所示:是控制器中的代码,它的基本思路是1、获取读取的文件,2、把文件转换为二进制数组,3、二进制数组转成内存流,4、利用NPOI把内存流中的数据读取成Excel。在写代码前要用“try catch”来捕获异常。上图中首先要把session中的ImportExcel移除是为了避免残留以前数据,然后判断页面传过来的文件是否为Excel表格,如果不是就提醒用户。然后就是声明二进制数组存放文件,再将传入的文件转化为二进制的数组存入fileBytes,然后再将二进制的数组转化为内存流,最后就是将内存流转化为工作簿。
导入Excel表格数据(一)_第3张图片
如上图所示:将内存流转化为工作簿后,就要判断工作簿中是否有工作表,然后就是查询出需要的信息,再声明对象列表,存放导入的学生信息,因为一个工作簿中可以有多个工作表,所以我们要获取第一个工作表。
导入Excel表格数据(一)_第4张图片
如上图所示:获取第一个工作表后就要判断工作表中是否有数据,如果没有数据就提醒用户数据表为空。PhysicalNumberOfRows 表示获取的是物理行数,也就是不包括那些空行(隔行)的情况。然后就将数据装到DataTable中;然后就是获取标题行和获取表格列数;再获取表格行数即最后一行下标+1;然后创建dataTable中的列,是为了循环添加标题行中各个单元格的数据,这里用到了for循环语句,i=每一行的第一个单元格下标,i<每一行的列数,i自增;然后就是遍历表头行中每一个单元格,是为了获取标题行各个单元格的数据,再将获取到的标题行的数据放到dataTable中。FirstCellNum:获取某行第一个单元格下标;LastCellNum:获取某行的列数;FirstRowNum:获取第一个实际行的下标;LastRowNum:获取最后一个实际行的下标。
导入Excel表格数据(一)_第5张图片
如上图所示:把获取到的标题行的数据放到dataTable中后就要读取Excel表格中的数据,sheet.FirstRowNum表示第一行的是标题,这里用for循环语句,i=标题+1;i<表格行数;i自增;然后就是获取每一行的数据,再创建DataTable行;这里为了防止每一行的数据为空,所以用if判断语句判断行数不能为空,然后就是遍历Excel中一行所有的单元格,再把新行添加到dataTable中。
导入Excel表格数据(一)_第6张图片
如上图所示:因为导入的数据可能会有失败的,所以我们要声明变量记录成功和失败的条数,然后用foreach遍历dataTable中的数据,创建studentVo对象保存每一条数据,然后用“try catch”捕获异常,这里以学院为例,先获取学院ID 和学院名称然后通过dataTable中的AcademeName到dbAcademe中查找相应的AcademeID,然后就将每一条数据都添加到对象列表中,值得注意的是,此时的数据还未保存到数据库,只是导入到临时表中,保存到session中的。所以下一篇就讲讲如何保存到数据库中。看着觉得步骤很多,其实也离不开它的4个基本思路,分别为: 1、获取读取的文件,2、把文件转换为二进制数组,3、二进制数组转成内存流,4、利用NPOI把内存流中的数据读取成Excel。这样将导入的Excel表格的数据保存到session中就完成了。如下图所示:Excel表格的数据已经导入到临时表中,也已保存到session中。
导入Excel表格数据(一)_第7张图片

你可能感兴趣的:(导入Excel表格数据(一))