文献种类:专题技术文献;
开发工具与关键技术: Visual Studio
作者: 吴新洋 ;年级: 1801 ;撰写时间: 2019 年 5 月 6 日
文献编号: 归档时间: 年 月 日
数据导出到Excel表格
开发工具与关键技术:Visual Studio
作者:吴新洋
撰写时间:2019年05月6日
数据库数据的导出,在大多数系统都是常见的,所以导出功能还是很重要的。数据的导出一般导出在Excel表格中,因为导入Excel中数据可观性较好。
举例:
//导出数据到Excel表格
function ExportToExcel() {
//获取当前表格数据的筛选条件
根据学院,年级,班级,学号获取页面数据
var AcademeID = $("#searchAcademeID").val();
var GradeID = $("#searchGradeID").val();
var ClassID = $("#searchClassID").val();
var StudentDetail = $("#searchStudentNumber").val();
//判断学院,年级,班级,学号为空,undefined那就让学院,班级,年级,为0,学号为空
if (AcademeID == "" || AcademeID == undefined) {
AcademeID = 0;
}
if (GradeID == "" || GradeID == undefined) {
GradeID = 0;
}
if (ClassID == "" || ClassID == undefined) {
ClassID = 0;
}
if (StudentDetail == undefined) {
StudentDetail = "";
}
layer.confirm(“是否要导出当前表格中的数据,是请点击确定按钮,否则请筛选需要导出的数据!”, { icon: 3, title: “提示” }, function (layerIndex) {
layer.close(layerIndex);
window.open(“ExportToExcel?AcademeID=” + AcademeID + “&GradeID=” + GradeID + “&ClassID=” + ClassID + “&StudentDetail=” + StudentDetail);
});
}
/// 导出数据到Excel表格
public ActionResult ExportToExcel(int AcademeID, int GradeID, int ClassID, string StudentDetail)
{
数据查询&条件筛选
List listStudent = (from tbStudent in myModel.PW_Student
join tbAcademe in myModel.SYS_Academe on tbStudent.AcademeID equals tbAcademe.AcademeID
join tbSpecialty in myModel.SYS_Specialty on tbStudent.SpecialtyID equals tbSpecialty.SpecialtyID
join tbGrade in myModel.SYS_Grade on tbStudent.GradeID equals tbGrade.GradeID
join tbClass in myModel.SYS_Class on tbStudent.ClassID equals tbClass.ClassID
join tbUser in myModel.PW_User on tbStudent.UserID equals tbUser.UserID
orderby tbStudent.studentID descending
select new studentVo
{
studentID = tbStudent.studentID,
UserID = tbUser.UserID,
StudentNumber = tbStudent.StudentNumber,
StudentName = tbStudent.StudentName,
StudentIDNum = tbStudent.StudentIDNum,
StudentSex = tbStudent.StudentSex,
AcademeName = tbAcademe.AcademeName,
SpecialtyName = tbSpecialty.SpecialtyName,
GradeName = tbGrade.GradeName,
ClassName = tbClass.ClassName,
UserNuber = tbUser.UserNuber,
//筛选条件
AcademeID = tbAcademe.AcademeID,
GradeID = tbGrade.GradeID,
ClassID = tbClass.ClassID
}).ToList();
使用ToList将数据转化为表格的形式
//条件筛选 Lambda表达式 运算符=>,左边是参数(如果有),右边是表达式或者语句
//x=>x*x
if (AcademeID > 0)
{
listStudent = listStudent.Where(m => m.AcademeID == AcademeID).ToList();
}
if (GradeID > 0)
{
listStudent = listStudent.Where(m => m.GradeID == GradeID).ToList();
}
if (ClassID > 0)
{
listStudent = listStudent.Where(m => m.ClassID == ClassID).ToList();
}
if (!string.IsNullOrEmpty(StudentDetail))
{
listStudent = listStudent.Where(m => m.StudentName.Contains(StudentDetail) || m.StudentNumber.Contains(StudentDetail)).ToList();
}
//创建Excel工作簿
HSSFWorkbook excelBook = new HSSFWorkbook();
//创建工作表
NPOI.SS.UserModel.ISheet sheet1 = excelBook.CreateSheet(“考生信息”);
//创建表头行
NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);
//设置表头
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(“账号”);
//为Excel表格添加数据
for (int i = 0; i < listStudent.Count(); i++)
{
//创建行
NPOI.SS.UserModel.IRow rowTemp = sheet1.CreateRow(i + 1);
//添加数据
rowTemp.CreateCell(0).SetCellValue(listStudent[i].StudentNumber);
rowTemp.CreateCell(1).SetCellValue(listStudent[i].StudentName);
rowTemp.CreateCell(2).SetCellValue(listStudent[i].StudentIDNum);
rowTemp.CreateCell(3).SetCellValue(listStudent[i].StudentSex);
rowTemp.CreateCell(4).SetCellValue(listStudent[i].AcademeName);
rowTemp.CreateCell(5).SetCellValue(listStudent[i].SpecialtyName);
rowTemp.CreateCell(6).SetCellValue(listStudent[i].GradeName);
rowTemp.CreateCell(7).SetCellValue(listStudent[i].ClassName);
rowTemp.CreateCell(8).SetCellValue(listStudent[i].UserNuber);
}
//为Excel文件命名
string fileName = “考生信息” + DateTime.Now.ToString(“yyyy-MM-dd-HH-mm-ss-ffff”)【年月日时分秒毫秒】 + “.xls”【格式】;确保Excel的格式正确
//转化为内存流
MemoryStream ExcelStream = new MemoryStream();
//将Excel文件写入内存流
excelBook.Write(ExcelStream);
//输出之前调用Seek(偏移量,游标位置) 移动文件读取指针到指定的位置
//Seek(0,Seek.begin) 第一个参数表示相对位置,第二个参数表示参照位置
ExcelStream.Seek(0, SeekOrigin.Begin);
//MIME文件类型(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
return File(ExcelStream, "application/vnd.ms-excel", fileName);
}