导入的好处是效率高,不像新增,新增一条数据就需要好几步操作,而导入只需要准备好格式然后填写每条数据的信息,然后导入数据,方便快捷,效率高。控制器部分,先声明方法,然后再获取模板路径,再判断模板是否存在,再获取文件名,再返回文件,否则弹出提示,模板不存在。
接着是new一个Vo,方便传入和传出数据,而将导入的Excel表格的数据保存到session有5个步骤,1、获取读取的文件;2、把文件转换为二进制数组;3、二进制数组转成内存流;4、利用NPOI把内存流中的数据读取成Excel;5、把session中的ImportExcel移除避免残留以前数据。接着是判断页面传过来的文件是否为Excel表格,再获取文件的后缀,接着是将传入的文件转化为二进制的数组存入fileBytes,然后是将内存流转化为工作簿,再判断工作簿是否有工作表,接着查询出
学院,专业,年级,班级
的信息:用来根据名称获取对应的ID,最后是存放导入学生信息。
先获取第一个工作表,然后判断是否有数据,定义datatable,如果有数据就将数据装到DataTable中,再获取标题行,接着获取表格列数、表格行数,再创建dataTable中的列,循环添加标题行中各个单元格的数据,接着遍历表头行中每一个单元格,获取标题行各个单元格的数据,再将获取到的标题行的数据放到dataTable中,再读取Excel中的数据,再获取行数据,接着创建DataTable行,再遍历excel中一行所有的单元格,最后新行添加到dataTable中。
接着声明变量,记录成功失败条数,再遍历dataTable中的数据,然后是创建studentVo对象保存每一条数据,再是获取学院ID 和学院名称,通过dataTable中的AcademeName到dbAcademe中查找相应的AcademeID,再是专业、年级、班级通过对应的ID获取,最后将每一条数据都添加到对象列表中。
再将数据保存到session中,再是一个字符串的拼接,提示多少条数据匹配成功多少条数据匹配失败,接着是一堆判断(判断太多已省略)。
接着计算总条数,实例化。
先是声明记录成功失败条数,再new一个Vo方便传出,传入数据,再判断数据是否与数据库中已有数据重复。
再新增用户表,用户角色明细表,学生表,之后再是一堆判断。