数据库数据导出excel表格

思路:
(1)引用NPOI插件
(2)使用插件方法HSSFWorkbook创建工作簿;
(3)使用插件方法ISheet创建工作表并命名;
(4)书写工作表表头(学号 姓名 身份证号 性别 学院 专业 年级 班级 账号);
(5)linq查询数据list 书写到工作表;
(6)使用IO流写出数据
(1)引用NPOI插件就是直接在项目中引用那个NPOI插件就行
要将数据库的数据导出excel表格刚开始就要从数据库查询到数据
只有查询出数据库数据才可以对数据库数据进行导出
下面就是查询数据库数据的代码
public ActionResult ExportToExcel(int AcademeID, int GradeID, int ClassID, string StudentInfo)
{
var listStu = from tbStudent in myModels.PW_Student//学生表
join tbAcademe in myModels.SYS_Academe on tbStudent.AcademeID equals tbAcademe.AcademeID//学院表
join tbSpcialty in myModels.SYS_Specialty on tbStudent.SpecialtyID equals tbSpcialty.SpecialtyID//专业表
join tbGrade in myModels.SYS_Grade on tbStudent.GradeID equals tbGrade.GradeID//年级表
join tbClass in myModels.SYS_Class on tbStudent.ClassID equals tbClass.ClassID//班级表
join tbUser in myModels.PW_User on tbStudent.UserID equals tbUser.UserID//用户表
orderby tbStudent.studentID descending
select new Student//构建的实体类
{
studentID = tbStudent.studentID,//学生ID
UserID = tbStudent.UserID,//用户ID
StudentNumber = tbStudent.StudentNumber,//学号
StudentName = tbStudent.StudentName,//姓名
StudentIDNum = tbStudent.StudentIDNum,//身份证号
StudentSex = tbStudent.StudentSex,//性别
AcademeName = tbAcademe.AcademeName,//学院
SpecialtyName = tbSpcialty.SpecialtyName,//专业
GradeName = tbGrade.GradeName,//年级
ClassName = tbClass.ClassName,//班级
UserNuber = tbUser.UserNuber,//账号
AcademeID = tbStudent.AcademeID,//学院ID
SpecialtyID = tbStudent.SpecialtyID,//专业ID
GradeID = tbStudent.GradeID,//年级ID
ClassID = tbStudent.ClassID//班级ID
};
if (AcademeID > 0)
{
//筛选学院数据
listStu = listStu.Where(m => m.AcademeID == AcademeID);
}
if (GradeID > 0)
{
listStu = listStu.Where(m => m.GradeID == GradeID);
}
if (ClassID > 0)
{
listStu = listStu.Where(m => m.ClassID == ClassID);
}
if (!string.IsNullOrEmpty(StudentInfo))
{
listStu = listStu.Where(m => m.StudentNumber.Contains(StudentInfo) || m.StudentName.Contains(StudentInfo));
}
//将查询出来的数据转化为对象列表的格式
List listExaminee = listStu.ToList();
(2)使用插件方法HSSFWorkbook创建工作簿
//创建工作簿Excel
HSSFWorkbook excelBook = new HSSFWorkbook();
(3)使用插件方法ISheet创建工作表并命名
//为工作簿创建工作表并命名
NPOI.SS.UserModel.ISheet sheet1 = excelBook.CreateSheet(“考生信息”);
(4)书写工作表表头(学号 姓名 身份证号 性别 学院 专业 年级 班级 账号);
//创建标题行并设置字段
//创建第一行
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
//创建9列并赋值
row1.CreateCell(0).SetCellValue(“学号”);
row1.CreateCell(1).SetCellValue(“姓名”);
row1.CreateCell(2).SetCellValue(“身份证号”);
row1.CreateCell(3).SetCellValue(“性别”);
row1.CreateCell(4).SetCellValue(“学院”);
row1.CreateCell(5).SetCellValue(“专业”);
row1.CreateCell(6).SetCellValue(“年级”);
row1.CreateCell(7).SetCellValue(“班级”);
row1.CreateCell(8).SetCellValue(“账号”);
(5)linq查询数据list 书写到工作表;
//(2)数据:listStu
//创建数据行
for (int i = 0; i < listStu.Count(); i++)
{
//创建行
NPOI.SS.UserModel.IRow rowTemp = sheet1.CreateRow(i + 1);
rowTemp.CreateCell(0).SetCellValue(listExaminee[i].StudentNumber);
rowTemp.CreateCell(1).SetCellValue(listExaminee[i].StudentName);
rowTemp.CreateCell(2).SetCellValue(listExaminee[i].StudentIDNum);
rowTemp.CreateCell(3).SetCellValue(listExaminee[i].StudentSex);
rowTemp.CreateCell(4).SetCellValue(listExaminee[i].AcademeName);
rowTemp.CreateCell(5).SetCellValue(listExaminee[i].SpecialtyName);
rowTemp.CreateCell(6).SetCellValue(listExaminee[i].GradeName);
rowTemp.CreateCell(7).SetCellValue(listExaminee[i].ClassName);
rowTemp.CreateCell(8).SetCellValue(listExaminee[i].UserNuber);
}
//文件名
var fileName = “考生信息” + DateTime.Now.ToString(“yyyy-MM-dd-HH-mm-ss-ffff”) + “.xls”;
(6)使用IO流写出数据
//将Excel表格转化为流,输出
//创建文件流
MemoryStream bookStream = new MemoryStream();
//文件写入流(向流中写入字节序列)
excelBook.Write(bookStream);
//输出之前调用Seek(偏移量,游标位置) 把0位置指定为开始位置
bookStream.Seek(0, SeekOrigin.Begin);
return File(bookStream, “application/vnd.ms-excel”, fileName);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值