一、创建一个类文件添加

    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. [LeetCode] New 21 Game 新二十一点游戏

    Alice plays the following game, loosely based on the card game "21". Alice starts with 0 p ...

  2. JS 简单工厂模式,工厂模式(二)

    一.什么是工厂模式: 工厂模式就是用来创建对象的一种最常用的设计模式,我们不暴露创建对象的具体逻辑,而是将逻辑封装到一个函数中,那么,这个函数 就可以被视为一个工厂.那么,在实际项目中,我们是不是可以 ...

  3. Linux 搭建 Nginx+PHP-FPM环境

    安装PHP.Nginx和PHP-FPM sudo apt-get install php sudo apt-get install nginx sudo apt-get install php7-fp ...

  4. laravel 目录权限

    chown -R www:www /data/wwwroot   #变更目录所有者并向下传递 find /data/wwwroot/ -type d -exec chmod 755 {} \;   # ...

  5. 神经网络_线性神经网络 2 (Nerual Network_Linear Nerual Network 2)

    1 LMS 学习规则 1.1 LMS学习规则定义 MSE=(1/Q)*Σe2k=(1/Q)*Σ(tk-ak)2,k=1,2,...,Q 式中:Q是训练样本:t(k)是神经元的期望输出:a(k)是神经元 ...

  6. Burp Suite Pro 教程

    1.Burp Suite Pro2.0.11破解版-2018.11.06更新 说明基地址 来源:http://ximcx.cn/post-110.html 启动;如果是用的burp2.0,把下面的代码 ...

  7. WebGL绘制有宽度的线

    WebGL中有宽度的线一直都是初学者的一道门槛,因为在windows系统中底层的渲染接口都是D3D提供的,所以无论你的lineWidth设置为多少,最终绘制出来的只有一像素.即使在移动端可以设置有宽度 ...

  8. PHP workerMan tcp与webSocket 透传互通

    <?php $work_path = dirname(__FILE__); chdir($work_path); use \Workerman\Worker; use \Workerman\Li ...

  9. JAVA基础—适配器设计模式

    适配器概念 在计算机编程中,适配器模式将一个类的接口适配成用户所期待的.使用适配器,可以使接口不兼容而无法在一起工作的类协调工作,做法是将类自己包裹在一个已经存在的类中. JDK对适配器设计模式的应用 ...

  10. PowerShell 中 RunspacePool 执行异步多线程任务

    在 PowerShell 中要执行任务脚本,现在通常使用 Runspace,效率很高:任务比较多时,用 Runspace pool 来执行异步操作,可以控制资源池数量,就像 C# 中的线程池一样 == ...