C#_.NetFramework_WebAPI项目_EXCEL数据导出 C#_.Net
发布时间:2020-12-16 08:57:21 所属栏目:asp.Net 来源:网络整理
导读:【推荐阅读我的最新的Core版文章,是最全的介绍: C#_.NetCore_Web项目_EXCEL数据导出 】 ? 项目需要引用NPOI的Nuget包: ? A-2--EXCEL数据导出--WebAPI项目--NPOI--接口导出: 说明:以下方法借助第三方插件:NPOI专门处理EXCEL等办公文档的类库,因此项目
【推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出】 ? 项目需要引用NPOI的Nuget包: ? A-2--EXCEL数据导出--WebAPI项目--NPOI--接口导出: 说明:以下方法借助第三方插件:NPOI专门处理EXCEL等办公文档的类库,因此项目中需引用该插件,NuGet--所有NPOI即可安装。 NPOI百度百科 ? /// <summary> /// 班车数据导出成EXCEL /// </summary> /// <param name="conferenceID"></param> /// <returns></returns> [HttpGet] public HttpResponseMessage ExportExcelDataForBusRoute(string conferenceID) { HttpResponseMessage result = new HttpResponseMessage(); ControllerHelp.RunAction(() => { BusRouteModelCollection busColl = BusRouteModelAdapter.Instance.Load(m => m.AppendItem("ConferenceID",conferenceID)); //如果想要某个单元格内容显示多列,在内容中加入: "n" 换行字符 Dictionary<string,string> dicColl = new Dictionary<string,string>() { {"路线标题","Title" },{"发车时间","DepartDate" },{"出发地","BeginPlace" },{"对接人","ContactsName" },{"对接人电话","ContactsPhone" } }; result = ExcelHelp<BusRouteModel,BusRouteModelCollection>.ExportExcelData(dicColl,busColl,"BusRoute"); }); return result; } ? /// <summary> /// 得到excel文件流 /// </summary> /// <returns></returns> private MemoryStream ExcelStream(Dictionary<string,string> displayAndColumnName,TCollection tlist) { //var list = dc.v_bs_dj_bbcdd1.Where(eps).ToList(); HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("Sheet1"); //1-创建首行 IRow headRow = sheet1.CreateRow(0); //1.1-设置首行样式 IFont font = workbook.CreateFont(); font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗 ICellStyle headCellStyle = workbook.CreateCellStyle(); headCellStyle.SetFont(font); headCellStyle.Alignment = HorizontalAlignment.Center; //字体居中 List<string> displayNameList = displayAndColumnName.Keys.ToList(); //1.2-设置首行标题 for (var i = 0; i < displayAndColumnName.Keys.Count; i++) { ICell cell = headRow.CreateCell(i); cell.SetCellValue(displayNameList[i].ToString()); cell.CellStyle = headCellStyle; } //2-设置内容列 List<string> columnNameList = displayAndColumnName.Values.ToList(); //2.1-内容行样式 ICellStyle contentCellStyle = workbook.CreateCellStyle(); contentCellStyle.Alignment = HorizontalAlignment.Center; //字体居中 contentCellStyle.WrapText = true; //自动换行 for (var i = 0; i < tlist.Count; i++) { IRow row = sheet1.CreateRow(i + 1); //设置内容 for (var j = 0; j < columnNameList.Count; j++) { ICell cell = row.CreateCell(j); cell.SetCellValue(getPropertyValue(tlist[i],columnNameList[j])); cell.CellStyle = contentCellStyle; } } //3-自动列宽-根据内容长度自动展开 for (int i = 0; i < displayNameList.Count; i++) { sheet1.AutoSizeColumn(i); } MemoryStream file = new MemoryStream(); workbook.Write(file); //这句代码非常重要,如果不加,会报:打开的EXCEL格式与扩展名指定的格式不一致 file.Seek(0,SeekOrigin.Begin); return file; } /// <summary> /// 导出excel功能控制器 /// </summary> /// <returns></returns> public HttpResponseMessage ExportExcelDataForWebAPI(Dictionary<string,TCollection tlist,string exportFileName) { var file = ExcelStream(displayAndColumnName,tlist); HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); result.Content = new StreamContent(file); result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); result.Content.Headers.ContentDisposition.FileName = exportFileName+".xls"; return result; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Web api删除方法输入对象参数为null
- 各大输入法分类词库内部格式的简单比较
- 如何在kendo UI MVC菜单中添加字体真棒图标?
- asp.net – 通过MSMQ分离Web和数据库层是必要的还是过度的?
- asp.net-mvc – 与程序包管理器控制台中的实体框架相关的项
- 在同一IIS上的ASP.NET应用程序之间共享信息
- asp.net – 无法加载文件或程序集“Oracle.DataAccess”或其
- asp.net – 为什么我的自定义404错误处理程序在部署到Web服
- 谈自由,ASP.NET Core才是未来?
- asp.net-mvc-3 – 在MVC应用程序中将配置设置注入Javascrip
推荐文章
站长推荐
- 单元测试ASP.NET MVC 2路线与AreaRegistration.R
- asp.net-mvc-3 – Razor引擎和ember.js可以一起工
- asp.net-mvc – 使用Angular VS Razor进行ASP.Ne
- asp.net-web-api – ASP.NET Web API避免查询字符
- asp.net-mvc-3 – LabelFor不在循环中工作(for /
- 如何在VBScript中将二进制数据写入磁盘?
- asp.net – 使用.NET Core和Angular 2/4的Web应用
- 如何将ASP.NET FormView绑定到单个记录?
- asp.net-mvc – 使用Nuget打包源代码
- asp.net-mvc-5 – 如何在Asp.Net Identity Frame
热点阅读