开发工具与关键技术:vs2015 MVC
作者:陈星宇
撰写时间:2019.5.1
当我们学会新增时,都是一条一条数据的新增,当我们需要大量的数据时,我们不妨增加点新东西那就是导入功能,我们来讲一讲关于Excel表格数据导入的过程。
Excel表格导入,说到底还是一个文件上传的功能,将Excel表格这个文件夹上传到我们控制器的过程并进行处理,获取里面的数据。接下来我们详细的讲讲这个Excel表格导入的过程。
首先我们得通过按钮触发点击事件点击input的标签里的file属性,打开文件上传的窗口
选择你所需要的Excel表格的文件,进行上传到在form标签下的input标签中。如图所示:
这样我们就可以在form表单里得到上传过来的Excel表格,
然后我们可以通过方法将form表单的数据提交到控制器,进行数据的处理
在这里我们获取通过id获取到form表单,
并用post的方式提交的我们控制器定义的一个方法ImportExcel中、
数据进行到这里就将文件提交我们在控制器中定义的一个ImportExcel中
这里特别要注意的点是这里充当基类的一定是HttpPostedFileBase,而且传过来的参数必须与form表单里的name的名字相等,这里而我们这里给的name值就是为file
上传到控制器,我们要做的第一件事就是判断传过来的这个文件是否是Excel表格
我们就要获取这个文件的文件类型通过if语句进行判断
如果传过来是个Excel表格的文件,我们还需要判断这个文件里是否拥有数据,因为传一个空的数据毫无意义
我们先声明一个二进制的数据,然后将文件里的内容读取到这个二进制的数组中,再判断这个数组的数据是否为空
到这里我们对于Excel表格的数据判断就结束了
我们需要查询表格内容所需要的字段,再声明一个实体类列表,用于存放导入数据。
除此之外还需要将我们放入二进制数据里的数据放到一个DataTable的文件流中
这里用遍历循环将每一行中的数据都查询出来
我们刚才声明了一个实体类列表,这里我们要声明同一个实体类来装导入数据,再将每一个试题类放入我们声明的试题类列表中
这里我们用表头的文字作为查询条件,获取该数据的Name和ID
从上图看出,我们查询的结果都放到student这个实体类中
然后我们用Add的方法将实体类新增到实体类列表中
当这一步操作完成之后,我们Excel表格的数据就上传完毕,我们可以把数据放到Session中
当需要存入到数据库,直接获取Session中的数据,再通过我们熟悉的新增方法就可以把不同的数据放入不同的数据库表中。到这里一个Excel表格的导入就结束了。