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 = , ...
随机推荐
- hive独立配置mysql
版本 安装好jdk,hadoop配置好环境变量 配置 HIVE_HOME 开始安装hive, 在 /home/hadoop/apache-hive-1.2.1-bin/conf 创建文件 hive-s ...
- Lua学习链接
Lua捕获 Lua中_G 是个什么鬼 Lua与ObjC的交互
- Dora.Interception,为.NET Core度身打造的AOP框架 [2]:以约定的方式定义拦截器
上一篇<更加简练的编程体验>提供了最新版本的Dora.Interception代码的AOP编程体验,接下来我们会这AOP框架的编程模式进行详细介绍,本篇文章着重关注的是拦截器的定义.采用“ ...
- 养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨
Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1. 使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中 ...
- Go语言数组和切片的原理
目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...
- [SQL]LeetCode178. 分数排名 | Rank Scores
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...
- [Swift]LeetCode778. 水位上升的泳池中游泳 | Swim in Rising Water
On an N x N grid, each square grid[i][j]represents the elevation at that point (i,j). Now rain start ...
- 白话说java gc垃圾回收
gc是java区别于其他好几门语言(c/c++)的一个代表功能(当然也有很多可以自动管理内存的语言,如所有的脚本语言,你根本不知道内存管理这回事)! 当然,之所以要把c/c++和java相比,是因为j ...
- Python---第3方库
使用pip命令安装 pip -h 查看pip使用帮助 pip install <第3方库名> pip install -U <第3方库名> 对已安装的第三方库更新 pi ...
- python 抓取糗事百科糗图
1 首先看下要抓取的页面 这是糗事百科里面的糗图页面,每一页里面有很多的图片,我们要做的就是把这些图片抓取下来. 2 分析网页源代码 发现源代码里面的每张图是这样储存的,所以决定使用正则匹配出图片的u ...