开发工具与关键技术:VS与MVC
作者:刘华叶
撰写时间:2019年5月12日
我们在做项目的过程中,需要用到的知识点很多,上次跟大家说了制作水晶报表,而我这次就跟大家说一下导出数据。
首先在控制器这边设置方法名称,然后在后面设置相应的参数,然后在通过匿名类型关键字var,后面设置相应的参数,在到数据库设置要查询的表,然后在进行一个连接。
然后在建一个表接收myModels实体返回来的数据,SYS_Academe学院表与SYS_Specialty专业表通过SpecialtyID进行连接,SYS_Specialty专业表与SYS_Grade年级表通过GradeID进行连接,SYS_Grade年级表在与SYS_Class班级表通过ClassID进行连接,SYS_Class班级表在与PW_User用户表通过UserID进行连接,后面再通过学生表和学生ID进行倒序排序。
在查询实体类,再到数据库查询需要的字段,首先这个学生ID等于学生表里面学生ID,用户ID对于用户表里面的用户ID,学号等于学生表里面的学号,姓名等于学生表里面的姓名,下面的字段的查询,都是一样的。
在通过if语句判断存不存在学院,如果存在学院,就找出相等的学院ID,然后在判断年级ID,班级ID,如果存在,就找出相等的ID,然后在判断学生信息是否为空,如果为空就会跳过去,不为空就执行下面的代码
接下来就要创建Excel表格,这里就涉及到一个插件的引用。
首先要找到这个插件,然后保存到自己的项目中,在去页面进行引用。
然后我们要创建Excel表格,就要先了解它有哪些内容,首先将查询出来的数据转化为对象列表的格式,然后在创建工作簿Excel表格,在创建工作表并进行命名,然后Excel表格分为两部分,第一部分是表头,第二部分是要查询的数据,创建标题行并设置字段,创建好第一行后,在创建9列并赋值。
然后在创建数据行,在用一个for循环,它有多少条数据就循环多少遍,在导出数据的时候,要获取到当时的时间,导出的类型是.xls,在创建文件流,引入IO流,Excel表格是不能直接返回的,先要创建文件流,在把文件写到这个文件流里面,向流中写入字节序列,输出之前调用Seek这个函数,它有两个参数,一个是偏移量,游标位置,把0位置指定为开始位置,最后在把文件作为一个文件流的形式进行返回。
然后在去视图设置方法名称,在提取查询条件,获取到当前table的条件,在用一个for循环去到table里面提取where属性的四个条件,还要声明一个变量来进行拼接,在拿查询的条件跟导出的条件进行比较,两者必须相等,在获取当前导出的条件,在获取值,进行一个判断,看看有没有值,有值就进行下一步,没有值就给它一个0,查询的还是全部数据。
在判断一下两个字符串是不是相等,如果相等就可以进去导出数据,并弹出提示框,提示您确定要导出多少条数据?,在关闭提示框,接收返回值,然后在用open这个方法,执行导出,如果它们不相等,就在弹出提示框,提示,请查询出要导出的数据。