导出
导出当前数据到Excel:
同样的一开始是获取到查询到的数据,因为在控制器同样的又要进行二次查询,所以呢要获取到查询的条件,写法和打印水晶报表是差不多的:
function exportExcel() {
var academeId = $("#sltAcademe").val();
var gradeId = $("#sltGrade").val();
var classId = $("#sltClass").val();
//判断
if (academeId == “” || academeId == undefined) {
academeId = 0;
}
if (gradeId == “” || gradeId == undefined) {
gradeId = 0;
}
if (classId == “” || classId == undefined) {
classId = 0;
}
layer.confirm(“确定要导出当前表格中数据吗?是请点击确定,否则请重新筛选数据再导出!”, { icon: 3, title: “提示” }, function (layIndex) {
layer.close(layIndex);
window.open(“ExportStudentAchievement?AcademeID=” + academeId + “&GradeID=” + gradeId + “&ClassID=” + classId);
});
}
多条件查询方法把数据出来,然后开始:
一、创建工作簿:
HSSFWorkbook exBook = new HSSFWorkbook();
二、创建工作表
ISheet sheet = exBook.CreateSheet(“考生成绩”);
三、设计表头
1、创建表头
IRow headRow = sheet.CreateRow(0);
2、设计表头字段
headRow.CreateCell(0).SetCellValue(“学号”);
headRow.CreateCell(1).SetCellValue(“姓名”);
headRow.CreateCell(2).SetCellValue(“性别”);
headRow.CreateCell(3).SetCellValue(“班级”);
headRow.CreateCell(4).SetCellValue(“成绩”);
headRow.CreateCell(5).SetCellValue(“合格类型”);
四、写入表格数据
for (int i = 0; i < listResult.Count(); i++)
{
1、创建行
IRow rowTemp = sheet.CreateRow(i + 1);
2、写入数据
rowTemp.CreateCell(0).SetCellValue(listResult[i].StudentNumber);
rowTemp.CreateCell(1).SetCellValue(listResult[i].StudentName);
rowTemp.CreateCell(2).SetCellValue(listResult[i].StudentSex);
rowTemp.CreateCell(3).SetCellValue(listResult[i].Class);
rowTemp.CreateCell(4).SetCellValue(listResult[i].Achievement.ToString());
rowTemp.CreateCell(5).SetCellValue(listResult[i].EligibleType);
}
五、将Excel文件转化为文件流输出
MemoryStream exStream = new MemoryStream();
exBook.Write(exStream);
六、输出之前调用Seek(偏移量,游标位置)方法:确定流开始的位置
exStream.Seek(0, SeekOrigin.Begin);
七、为下载的Excel文件命名
string exFileName = “学生安全教育测试成绩” + DateTime.Now.ToString(“yyyyMMddHHmmss”) + “.xls”;
以上就是我理解的导出,本文也有引用老的,有什么不对的地方,请多多指点。