以表格形式导出数据
从图中可知,我们需要先从数据库查询出数据(数据库需要先存在数据)

数据库已经存在的数据

(表格)PW_Achievement (字段)UserID, EligibleTypeID, AchievementID, ExamNumber, Achievement, StTime, EnTime
(表格)PW_Student (字段) studentID, UserID, ClassID, GradeID, SpecialtyID, AcademeID, StudentName, StudentSex,StudentIDNum,StudentNumber
(表格)SYS_EligibleType (字段)EligibleType, EligibleTypeID, ScoreRange
(表格)SYS_Academe (字段) AcademeID,AcademeName
(表格)SYS_Grade (字段)GradeID,GradeName,AcademeID
(表格)SYS_Class (字段)ClassID ,GradeID,AcademeID,SpecialtyID,ClassName

数据查询代码
以表格形式导出数据
根据ID查询数据、多条件查询代码
以表格形式导出数据
将IEnumerable类型的集合 转换为DataTable类型
1、 定义要返回的DataTable对象
2、 保存列集合的属性信息数组
3、 使用反射获取T类型的属性信息,返回一个PropertyInfo类型的集合
4、 循环遍历集合,使用反射获取类型的属性信息foreach (T rec in varlist)
5、 新建一个用于添加到DataTable中的DataRow对象
6、 将具有结果值的DataRow添加到DataTable集合中
7、 返回DataTable对象
以表格形式导出数据
新建一个用于添加到DataTable中的DataRow对象

DataRow dr = dtReturn.NewRow();//新建一个用于添加到DataTable中的DataRow对象
foreach(PropertyInfo pi in oProps) { //循环遍历属性集合
dr[pi.Name] = pi.GetValue(rec, null) == null ? //为DataRow中的指定列赋值
DBNull.Value : pi.GetValue(rec, null);
}
dtReturn.Rows.Add(dr);//将具有结果值的DataRow添加到DataTable集合中
}
return dtReturn;//返回DataTable对象

为什么要将IEnumerable数据类型转换成DataTable数据类型?
查询相应的数据,该查询出的数据是属于数据集中的数据的,是IEnumerable类型的集合无法接收数据集内容,所以在打印前必须将IEnumerable数据类型转换为DataTable的数据类型

以表格形式导出数据
导出思路:
1、 创建Excel对象
2、 创建Excel中的sheet
3、 给sheet添加第一行表头标题
4、 使用循环语句给sheet每一行添加数据
5、 给Excel文件重新命名
6、 将Excel转换为文件流输出

将Excel转换为文件流输出
1、 定义文件流
2、 将sheet写入文件流
3、 输出之前seek(偏流量,游标位置)方法
4、 以文件类型返回数据

将Excel转换为文件流输出相关代码

MemoryStream BookStream = new MemoryStream();//定义文件流
book.Write(BookStream);//将sheet写入文件流
BookStream.Seek(0, SeekOrigin.Begin);//输出之前调用Seek(偏流量,游标位置)方法:获取文件流的长度
return File(BookStream, “application/vnd.ms-excel”, fileName); // 文件类型/文件名称

已存在代码

< select class=“form-control” id=“sltAcademe”> < /select>
< select class=“form-control” id=“sltClass”></ select>
< select class=“form-control” id=“sltGrade”>< /select>
以表格形式导出数据

相关文章: