一、创建一个类文件添加

    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()>)
{
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();
//存储列名
if (Columnnames != null)
{
int iStart = ;
if (IsSortCol)
{
row1.CreateCell(iStart).SetCellValue("序号");
iStart = ;
}
for (int i = ; i < Columnnames.Count; i++)
{
row1.CreateCell(i + iStart).SetCellValue(Columnnames[i].Columnnames);
} //存储值
if (list != null)
{
for (int i = ; i < list.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + );
if (IsSortCol)
{
rowtemp.CreateCell().SetCellValue(i + );
}
for (int m = ; 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(, 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>();
     EnumValueList.Add(new EnumName() { EnumKey = "0", EnumValue = "成功" });
     //默认值
     EnumValueList.Add(new EnumName() { EnumKey = "", EnumValue = "失败" });

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 NPOI导出excel通用的更多相关文章

  1. Asp.net MVC NPOI导出Excel

    public class NpoiMemoryStream : MemoryStream { public NpoiMemoryStream() { AllowClose = true; } publ ...

  2. Asp.Net 使用Npoi导出Excel

    引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...

  3. NPOI MVC 模型导出Excel通用类

    通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...

  4. asp.net Mvc Npoi 导出导入 excel

    因近期项目遇到所以记录一下: 首先导出Excel : 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// < ...

  5. ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库

    使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...

  6. NPOI 导出excel 通用方法

    public static byte[] ExportExcel<T>(Dictionary<string, string> columnsHeader, List<T& ...

  7. ASP.NET MVC - NPOI读取Excel

    引入: using System; using System.Data; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserM ...

  8. asp.net mvc NPOI 生成Excel文件

    private string PushToDown(string addtime) { DataTable dt = _bCreateCode.PushtoExcel(addtime); //1.实例 ...

  9. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...

随机推荐

  1. 201771010126 王燕《面向对象程序设计(Java)》第十周学习总结

    实验十  泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: 泛型:也称参数化类型(parameterized type),就是在定义类.接口和方法时,通过类型 ...

  2. 怎么用JQUERY设置div背景图片?

    平常,在css里,我们写成 { background:url(....) ; } 如果需要写脚本, 则 function(){ .....; $(....).css("background- ...

  3. react-native-upgrade-android

    React Native的版本升级插件(仅是android), react-native版本需要0.17.0及以上 如何安装 1.首先安装npm包 npm install react-native-u ...

  4. WdatePicker 日期控件- 功能及示例

      3. 多语言和自定义皮肤多语言支持 通过lang属性,可以为每个日期控件单独配置语言,当然也可以通过WdatePicker.js配置全局的语言语言列表和语言安装说明详见语言配置 示例3-1 多语言 ...

  5. IOS菜鸟学习

    1.NS是系统库.2.IOS类的声明:@interface MyObject : NSObject {    int memberVar1; // 实体变量    id  memberVar2;} + ...

  6. toastr操作完成提示框

    toastr.js组件 关于信息提示框,项目中使用的是toastr.js这个组件,这个组件最大的好处就是异步.无阻塞,提示后可设置消失时间,并且可以将消息提示放到界面的各个地方. 官方文档以及源码 源 ...

  7. Python档案袋(线程 )

    Python的进程和线程是使用的操作系统的原生线程和进程,其是去调用操作系统的相应接口实现 进程:之间不可直接共享数据,是资源的集合,进程必须有一个线程 线程:基于进程,之间可直接共享数据,可执行,只 ...

  8. ASP.NET Core 系列目录

    目录: ASP.NET Core 2.0 : 一. 概述 ASP.NET Core 2.0:二. 开发环境 ASP.NET Core 2.0 : 三. 项目结构 ASP.NET Core 2.0 : ...

  9. JVM基础系列第6讲:Java 虚拟机内存结构

    看到这里,我相信大家对于一个 Java 源文件是如何变成字节码文件,以及字节码文件的含义已经非常清楚了.那么接下来就是让 Java 虚拟机运行字节码文件,从而得出我们最终想要的结果了.在这个过程中,J ...

  10. .NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

    作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/9998021.html 写在前面 上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着 ...