一、创建一个类文件添加

    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. 873D. Merge Sort

    Merge sort is a well-known sorting algorithm. The main function that sorts the elements of array a w ...

  2. Jmeter中连接Oracle报错Cannot create PoolableConnectionFactory

    填坑贴,之前一直用jmeter2.13版本进行oracle测试,今天改为3.2版本,发现按照以往的方法执行测试,JDBC Request结果始终报错:Cannot create PoolableCon ...

  3. elasticsearch目录

    快速入门篇(基于版本5.4) Elasticsearch入门 Elasticsearch和Kibana安装 Elasticsearch索引和文档操作 Elasticsearch文档查询 安装和配置(基 ...

  4. 如何实现文件上传 - JavaWeb

    直接上代码 ( idea 开发,SpringBoot 框架 ): 首先是Controller的写法: package com.xxx.Controller; import com.xxx.Tools. ...

  5. Lua学习链接

    Lua捕获 Lua中_G 是个什么鬼 Lua与ObjC的交互

  6. 电子科技大学实验中学PK赛(三)-期末测试比赛题解

    比赛地址:http://qscoj.cn/contest/33/ A题 国家德比 分析:用b,d,B,D记录两场比赛两支球队的比分,先判断b+B与d+D的大小,如果先者大则拜仁胜,后者大则多特胜:相同 ...

  7. [Swift]LeetCode132. 分割回文串 II | Palindrome Partitioning II

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

  8. 多线程系列(四):Task

    目录: 为什么要使用任务 任务 一.为什么使用任务 线程池已经可以让我们简单地创建线程,并优化了性能. 但是,线程池的缺点在于,我不清楚我的操作什么时候完成,也不能收到返回值,因为委托是没有返回值的. ...

  9. JavaWeb过滤器.监听器.拦截器-原理&区别-个人总结

    对比项 拦截器 过滤器 机制 反射机制 函数回调 是否依赖servlet容器 是 否 请求处理 只能对action请求起作用 几乎所有的请求起作用 对action处理 可以访问action上下文.值栈 ...

  10. Docker基础命令和时区问题

    Docker 命令 1. 安装Docker # ubuntu系统安装 $ sudo apt install docker-ce # 启动docker $ sudo systemctl start do ...