导出文件

开发工具与关键技术:VS+MVC
作者:茅凯翔
撰写时间:2019年5月14日

之前我写过导入文件,现在来写个导出文件,个人感觉都差不多,但也有许多不同的地方。导入的时候也要有表格才能导入,导出也一样,导出去形成表格,下面就是结果图:
导出文件
话不多说,来写代码,在控制器里写方法,给方法名称(ExportToExcel),给参数(AcademeID,GradeID,ClassID,StudentInfo),声明(listStu)来接收所返回的数据,开始连表。学生表(tbStudent)来自模型的学生表(PW_Student)自定义表,连接模型的学院表,查看学院ID是否与页面传来的学院ID相同,连接模型的专业表,查看专业ID是否与页面传来的专业ID相同,连接模型的年级表,查看年级ID是否与页面传来的年级ID 相同,连接模型的班级表,查看班级ID 是否与页面传来的班级ID相同,连接模型的用户表,查看用户ID是否与页面传来的用户ID相同,给学生表降序排序方式,选择新的构建实体类。接着把学生表(tbStudent)里的学生ID,用户ID,学号,学生姓名,身份证号,性别,学院ID,专业ID,年级ID,班级ID赋值到相同的学生ID,用户ID,学号,学生姓名,身份证号,性别,学院ID,专业ID,年级ID,班级ID,把学院表(tbAcademe)里的学院名称赋值给相同的学院名称,把专业表(tbSpcialty)里的专业名称赋值到相同的专业名称,把年级表(tbGrade)里的年级名称赋值到相同的年级名称,把班级表(tbClass)里的班级名称赋值到相同的班级名称,把用户表(tbUser)里的账号赋值到相同的账号。
导出文件
开始if判断学院ID的数据是否大于0,在连表的自定义表中筛选出学院数据,学院ID参数是否等于学院ID。接着if判断年级ID数据是否大于0,在连表的自定义表中筛选出年级数据,年级ID参数是否等于年级ID。接着if判断班级ID数据是否大于0,在连表的自定义表中筛选出班级数据,班级ID参数是否等于班级ID。最后if判断学生信息参数不为空值,在连表的自定义表中筛选出学生信息数据,学号包含着学生信息,姓名包含着学生信息。
导出文件
然后计算机就将查询出来的数据转化成对象列表的格式,再自行创建工作簿Excel,创建好工作簿后再创建工作,为工作簿创建工作表并命名,然后开始编写工作表,编写表头,创建出标题行并为它设置字段,创建出第一行,第一行的标题有(学号、姓名、身份证号、性别、学院、专业、年级、班级、账号)创建出九列并赋值。
导出文件
开始建立数据:listStu,创建数据行,for循环的每一行数据都包含着(学号、姓名、身份证号、性别、学院、专业、年级、班级、账号)这九种数据,每创建好一行的数据便循环创建下一行的数据,都是如此重复,创建到页面传来的数据为空。页面传输过来的数据行,都由NPOI来操作,使用代码把数据有序的创建进前面设置的表格里。
导出文件
然后将文件名设置成“考生信息”加使用时间格式年/月/日/时钟/分钟/秒钟,最后一个是什么我也不太清楚,再加个xls的文件格式。也就是将Excel表格转化为流,输出。具体一点就是先创建文件流,再把文件写入流中(向流中写入字节序列),最后输出之前调用Seek(偏移量、游标位置),再把0位置指定为开始位置。导出的文件表格就是我在开始的那张图的样子。
导出文件