插件:Aspose.Cells
没有安装office插件也能使用;
导出:不能使用ajax异步·
/// <summary> /// 导出试题 /// </summary> /// <param name="userId">用户Id</param> /// <param name="courseId">课程Id</param> /// <returns></returns> [HttpGet] public FilePathResult ExportQuestions(int userId, int courseId) { // 工作薄 Workbook BuildReport_WorkBook = new Workbook(); //sheets集合 Worksheets sheets = BuildReport_WorkBook.Worksheets; //试题表 Worksheet BuildReport_WorkSheet = BuildReport_WorkBook.Worksheets[0]; // sheet1 BuildReport_WorkBook.Worksheets[0].Name = "试题表"; BuildReport_WorkSheet.FreezePanes(1, 1, 1, 0); //冻结第一行 BuildReport_WorkSheet.AutoFitColumns();//让各列自适应宽度 Cells BuildReportCells = BuildReport_WorkSheet.Cells; //单元格 //表头 BuildReportCells[0, 0].PutValue("试题Id"); BuildReportCells[0, 1].PutValue("课程Id"); BuildReportCells[0, 2].PutValue("试题类型"); //第二个sheet BuildReport_WorkBook.Worksheets.Add("试题描述"); Worksheet BuildReport_WorkSheet_Desc = BuildReport_WorkBook.Worksheets["试题描述"]; //sheet2 BuildReport_WorkSheet_Desc.FreezePanes(1, 1, 1, 0); //冻结第一行 Cells BuildReportCells_Desc = BuildReport_WorkSheet_Desc.Cells; //表头 BuildReportCells_Desc[0, 0].PutValue("试题描述Id"); BuildReportCells_Desc[0, 1].PutValue("试题Id"); BuildReportCells_Desc[0, 2].PutValue("试题描述"); BuildReportCells_Desc[0, 3].PutValue("试题解析"); BuildReportCells_Desc[0, 4].PutValue("试题描述(不包含html字符)"); //列 BuildReportCells[i, 0].PutValue(item.Id); BuildReportCells[i, 1].PutValue(item.CourseId); BuildReportCells[i, 2].PutValue(item.QuestionType); BuildReportCells_Desc[j, 0].PutValue(questionDesc.ID); BuildReportCells_Desc[j, 1].PutValue(questionDesc.QuestionId); BuildReportCells_Desc[j, 2].PutValue(questionDesc.Description); BuildReportCells_Desc[j, 3].PutValue(questionDesc.Analyses); //文件路径 string fileDirPath = "/Downloads/试题" + userId + "_" + courseId; string downPath = Server.MapPath(fileDirPath); if (!Directory.Exists(downPath)) { Directory.CreateDirectory(downPath); } System.IO.File.SetAttributes(downPath, FileAttributes.Normal); string nowTime = DateTime.Now.ToString("yyyyMMddHHmmssfff"); string tempFile = Path.GetTempFileName(); string saveFile = Server.MapPath(fileDirPath + "/" + "试题" + "_" + userId + "_" + courseId + ".xls"); BuildReport_WorkBook.Save(saveFile); return File(saveFile, "application/octet-stream", "试题" + "_" + userId + "_" + courseId + ".xls"); }