asp.net MVC NPOI导出excel通用
一、创建一个类文件添加
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通用的更多相关文章
- Asp.net MVC NPOI导出Excel
public class NpoiMemoryStream : MemoryStream { public NpoiMemoryStream() { AllowClose = true; } publ ...
- Asp.Net 使用Npoi导出Excel
引言 使用Npoi导出Excel 服务器可以不装任何office组件,昨天在做一个导出时用到Npoi导出Excel,而且所导Excel也符合规范,打开时不会有任何文件损坏之类的提示.但是在做导入时还是 ...
- NPOI MVC 模型导出Excel通用类
通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...
- asp.net Mvc Npoi 导出导入 excel
因近期项目遇到所以记录一下: 首先导出Excel : 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// < ...
- ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库
使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...
- NPOI 导出excel 通用方法
public static byte[] ExportExcel<T>(Dictionary<string, string> columnsHeader, List<T& ...
- ASP.NET MVC - NPOI读取Excel
引入: using System; using System.Data; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserM ...
- asp.net mvc NPOI 生成Excel文件
private string PushToDown(string addtime) { DataTable dt = _bCreateCode.PushtoExcel(addtime); //1.实例 ...
- MVC NPOI Linq导出Excel通用类
之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...
随机推荐
- [LeetCode] New 21 Game 新二十一点游戏
Alice plays the following game, loosely based on the card game "21". Alice starts with 0 p ...
- JS 简单工厂模式,工厂模式(二)
一.什么是工厂模式: 工厂模式就是用来创建对象的一种最常用的设计模式,我们不暴露创建对象的具体逻辑,而是将逻辑封装到一个函数中,那么,这个函数 就可以被视为一个工厂.那么,在实际项目中,我们是不是可以 ...
- Linux 搭建 Nginx+PHP-FPM环境
安装PHP.Nginx和PHP-FPM sudo apt-get install php sudo apt-get install nginx sudo apt-get install php7-fp ...
- laravel 目录权限
chown -R www:www /data/wwwroot #变更目录所有者并向下传递 find /data/wwwroot/ -type d -exec chmod 755 {} \; # ...
- 神经网络_线性神经网络 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)是神经元 ...
- Burp Suite Pro 教程
1.Burp Suite Pro2.0.11破解版-2018.11.06更新 说明基地址 来源:http://ximcx.cn/post-110.html 启动;如果是用的burp2.0,把下面的代码 ...
- WebGL绘制有宽度的线
WebGL中有宽度的线一直都是初学者的一道门槛,因为在windows系统中底层的渲染接口都是D3D提供的,所以无论你的lineWidth设置为多少,最终绘制出来的只有一像素.即使在移动端可以设置有宽度 ...
- PHP workerMan tcp与webSocket 透传互通
<?php $work_path = dirname(__FILE__); chdir($work_path); use \Workerman\Worker; use \Workerman\Li ...
- JAVA基础—适配器设计模式
适配器概念 在计算机编程中,适配器模式将一个类的接口适配成用户所期待的.使用适配器,可以使接口不兼容而无法在一起工作的类协调工作,做法是将类自己包裹在一个已经存在的类中. JDK对适配器设计模式的应用 ...
- PowerShell 中 RunspacePool 执行异步多线程任务
在 PowerShell 中要执行任务脚本,现在通常使用 Runspace,效率很高:任务比较多时,用 Runspace pool 来执行异步操作,可以控制资源池数量,就像 C# 中的线程池一样 == ...