asp.net MVC NPOI导出excel通用
发布时间:2020-12-16 03:56:17 所属栏目:asp.Net 来源:网络整理
导读:一、创建一个类文件添加 public class ExportToExcelColumn { public ExportToExcelColumn( string _Columnnames, string _EnglishColumnnames) { Columnnames = _Columnnames; EnglishColumnnames = _EnglishColumnnames; } public ExportToExcelColumn( st
一、创建一个类文件添加 public class ExportToExcelColumn { public ExportToExcelColumn(string _Columnnames,string _EnglishColumnnames) { Columnnames = _Columnnames; EnglishColumnnames = _EnglishColumnnames; } public ExportToExcelColumn(string _Columnnames,string _EnglishColumnnames,List<EnumName> _EnumValueList) { Columnnames = _Columnnames; EnglishColumnnames = _EnglishColumnnames; EnumValueList = _EnumValueList; if(_EnumValueList!=null&& _EnumValueList.Count()>0) { IsEnum = true; } } public string Columnnames { get; set; } public string EnglishColumnnames { get; set; } public bool IsEnum { get; set; } = false; public List<EnumName> EnumValueList { get; set; } } public class EnumName { public string EnumKey { get; set; } public string EnumValue { get; set; } } 二、添加调用方法 #region /// <summary> /// /// </summary> /// <param name="list">数据</param> /// <param name="saveFileName">保存名</param> /// <param name="Columnnames">列名</param> /// <param name="IsSortCol">是否添加排序列</param> /// <returns></returns> public ActionResult ExportToExcel(List<dynamic> list,string saveFileName,List<ExportToExcelColumn> Columnnames,bool IsSortCol) { //创建Excel文件的对象 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); //添加一个sheet NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet("Sheet1"); //给sheet1添加第一行的头部标题 NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0); //存储列名 if (Columnnames != null) { int iStart = 0; if (IsSortCol) { row1.CreateCell(iStart).SetCellValue("序号"); iStart = 1; } for (int i = 0; i < Columnnames.Count; i++) { row1.CreateCell(i + iStart).SetCellValue(Columnnames[i].Columnnames); } //存储值 if (list != null) { for (int i = 0; i < list.Count; i++) { NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1); if (IsSortCol) { rowtemp.CreateCell(0).SetCellValue(i + 1); } for (int m = 0; m < Columnnames.Count; m++) { string value = ""; bool IsEnum = Columnnames[m].IsEnum; List<EnumName> EnumValueList= Columnnames[m].EnumValueList; value = list[i][Columnnames[m].EnglishColumnnames].ToString(); if(IsEnum) { EnumName enumName = EnumValueList.FirstOrDefault(t=>t.EnumKey== value); if (enumName != null) { value = enumName.EnumValue; } else { enumName = EnumValueList.FirstOrDefault(t => t.EnumKey == ""); if (enumName != null) { value = enumName.EnumValue; } } } rowtemp.CreateCell(m + iStart).SetCellValue(value); } } } } // 写入到客户端 System.IO.MemoryStream ms = new System.IO.MemoryStream(); book.Write(ms); ms.Seek(0,SeekOrigin.Begin); return File(ms,"application/vnd.ms-excel",saveFileName + ".xls"); } #endregion ? 三、自定义导出列 List<ExportToExcelColumn> Columnnames = new List<ExportToExcelColumn>(); Columnnames.Add(new ExportToExcelColumn("编号","code")); Columnnames.Add(new ExportToExcelColumn("名称","name")); ? ? ?List<EnumName> EnumValueList = new List<EnumName>(); ? ? ?Columnnames.Add(new ExportToExcelColumn("状态","status",EnumValueList)); 四、调用导出方法 /// <summary> /// /// </summary> /// <param name="list">数据</param> /// <param name="fileName">保存名</param> /// <param name="Columnnames">列名</param> /// <param name="IsSortCol">是否添加排序列</param> /// <returns></returns>?return ExportToExcel(list,filename,Columnnames,true); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 我不能在ASP.NET MVC中做的事情
- asp.net – 为什么Global.asax事件在我的ASP.NET网站没有触
- asp.net-mvc – 在ASP.NET MVC中的默认成员资格提供程序中保
- asp.net – ASP GridView在编辑模式下的所有行
- asp.net-mvc-3 – 如何在MVC3自定义编辑器模板中获取属性名
- asp.net-mvc – 单元测试自定义模型Binder – 假HttpContex
- “经典”ASP.NET页面和Microsoft MVC可以在同一个Web应用程
- asp.net-mvc – ASP.NET MVC自动解码来自AJAX的JSON编码参数
- ASP.NET Core RC2无法找到Html编码器实现
- asp.net-mvc – 如何在jqgrid中创建两个页脚行