try { //创建Excel文件的对象 HSSFWorkbook book = new HSSFWorkbook(); if (result.Code == 0 && result.Data?.Count > 0) { //添加一个sheet NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); //给sheet1添加第一行的头部标题 NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0); NPOI.SS.UserModel.ICellStyle style = book.CreateCellStyle(); //样式对象 #region 写入头部标题, var upmodel = result.Data[0]; var rowsId = 0; PropertyInfo[] propertys = upmodel.GetType().GetProperties(); foreach (PropertyInfo pinfo in propertys) { row1.CreateCell(rowsId).SetCellValue(pinfo.Name); rowsId += 1; } #endregion var rowtempid = 1; foreach (var item in result.Data) //循环写入 { NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(rowtempid); PropertyInfo[] Itempropertys = item.GetType().GetProperties(); for (int i = 0; i < Itempropertys.Length; i++) { var pinfoa = Itempropertys[i]; //四个参数分别是:起始行,结束行, 起始列,结束列 sheet1.AddMergedRegion(new CellRangeAddress(rowtempid, rowtempid, i , i )); rowtemp.CreateCell(i).SetCellValue(pinfoa.GetValue(item,null).ToStr()); } rowtempid++; } } else { Logger.Error("导出未通过好友,没有数据! "); return new HttpResponseMessage(HttpStatusCode.NoContent); } // 写入到服务端 var filename = CurrentUser.Account + "_未通过好友_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; var filePath = "/ueditor-asp/asp/upload/RefusesFriend/"; //物理完整路径 string toFileFullPath = HttpContext.Current.Server.MapPath(filePath); //检查是否有该路径没有就创建 if (!Directory.Exists(toFileFullPath)) { Directory.CreateDirectory(toFileFullPath); } //将要保存的完整文件名 string toFile = toFileFullPath + filename; FileStream fs = File.Create(toFile); book.Write(fs); fs.Close(); HttpResponseMessage response = new HttpResponseMessage(); var fileStream = new FileStream(toFile, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); response.Content = new StreamContent(fileStream); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = filename; response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); // 这句话要告诉浏览器要下载文件 vnd.ns-excel response.Content.Headers.ContentLength = new FileInfo(toFile).Length; return response; } catch (Exception ex) { Logger.Error("导出未通过好友,错误: " + ex.ToString()); throw; }