NPOI+反射 实现快速导出
只是觉得这样很方便 记录一下
公司有封装的方法,不过是查出的Table类型,每次用的时候很都很烦,处理数据也不方便,最主要的是我也没耐心去看,反正在我看来很麻烦,用的时候很头疼。还是习惯通过Model List来处理数据,可以利用Model Class属性来处理数据格式等等
var orders=GetOrders();//获取订单列表
//Excel表头
string[] headerTemp = { "订单号", "下单时间", "订单状态", "店铺名称", "商品名称"};
//对应的Model Class属性
string[] propertyNameTemp = { "OrderId", "OrderDate", "OrderStatusString", "StoreName", "ProductName"};
#region excel简单样式设置
HSSFWorkbook hssfworkbook = new HSSFWorkbook();
ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
ICellStyle othercolstyle = hssfworkbook.CreateCellStyle();
IFont othercolfont = hssfworkbook.CreateFont();
othercolfont.FontName = "微软雅黑";
othercolfont.FontHeightInPoints = ;
othercolstyle.SetFont(othercolfont);
othercolstyle.VerticalAlignment = VerticalAlignment.Center;
othercolstyle.Alignment = HorizontalAlignment.Center;
#endregion for (int i = ; i <= orders.Count; i++)
{
IRow row = sheet1.CreateRow(i);
row.Height = * ;
for (int j = ; j < headerTemp.Length; j++)
{
ICell cell = row.CreateCell(j);
cell.CellStyle = othercolstyle;
sheet1.SetColumnWidth(j, * );
if (i == )
{
//第一行设置表头
cell.SetCellValue(headerTemp[j]);
}
else
{
Type temp = orders[i - ].GetType();
PropertyInfo propertyInfo = temp.GetProperty(propertyNameTemp[j]);
object pvalue = propertyInfo.GetValue(orders[i - ], null);
cell.SetCellValue(pvalue == null ? "" : pvalue.ToString());
}
}
}
// 写入到客户端
System.IO.MemoryStream ms = new System.IO.MemoryStream();
hssfworkbook.Write(ms);
ms.Seek(, SeekOrigin.Begin);
return File(ms, "application/vnd.ms-excel", string.Format("{0}.xls", DateTime.Now)); //上面代码 return File为.net mvc中返回方式
//ashx或aspx页面最后返回方式
//写入流
MemoryStream file = new MemoryStream();
hssfworkbook.Write(file);
if (file != null)
{
// 写入到客户端
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", HttpContext.Current.Server.UrlEncode("竞猜用户.xlsx")));
Response.BinaryWrite(file.ToArray());
}
每次只需要设置excel表头和对应的Model属性就可以,反射那部分不用动。
一般像订单状态查出来是int类型的枚举值,可以在Model里扩展枚举属性OrderStatusString
public string OrderStatusString
{
get{return 对应的订单状态枚举;}
}
NPOI+反射 实现快速导出的更多相关文章
- asp.net mvc4使用NPOI 数据处理之快速导出Excel文档
一.背景 在之前做的小项目里有一需求是:要求将一活动录入的数据进行统计,并以excel表格形式导出来,并且对表格格式要求并不高. 二.问题分析 鉴于用户只要求最终将数据库中的数据导出excel,对于格 ...
- c#使用NPOI快速导出到Excel
接上篇博文<C#快速导出到excel>:由于此种方法不能导出成.xlsx格式,为解决此问题,本次分享使用NPOI. 参考:https://www.cnblogs.com/lazyneal/ ...
- 使用NPOI快速导出导入Excel
这两天做项目需要导入导出EXCEL,是基于NPOI的封装,设计思路是使用DataTable,然后导出一个和DataTable一模一样的Excel表出来 github地址:https://github. ...
- mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)
♣ mysql使用navicat11快速导出数据库ER图 ♣ mysql使用navicat11快速导出数据库数据字典 ♣ navicat11 for mysql (这里是mysql5.7.12)专业版 ...
- mysql远程快速导出csv格式数据工具
如需转载,请经本人同意. 之前本人曾经写过一个使用 select ....into outfile原理导出数据的脚本,但该脚本值适用于本地快速导出,并不支持远程服务,故又编写了下面这个支持远程导出的脚 ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- Navicat Premium快速导出数据库ER图和数据字典
2.快速导出数据库数据字典: SQL Server 数据库,生成数据字典 use YourDatabase --指定要生成数据字典的数据库 go SELECT 表名= then d.name else ...
- 使用HTML,CSS快速导出数据到Excel
在应用中经常会遇到要从系统或数据库中导出数据平面文件,一般是导出到txt,csv或excel.txt和csv一般用在系统间的数据交换, 而excel一般有较好的显示效果,可以按照一定的模板导出,导出就 ...
- 使用NPOI或EPPlus来导出Excel文件实例,可在Excel文件加密
使用NPOI.dll组件来导出Excel文件,并设置样式,Nuget引用即可. packages\NPOI.2.1.3.1\lib\net20\NPOI.dll #region Excel prote ...
随机推荐
- php 引用一点要小心使用
今天遇见一个问题,我两次循环都是用的 foreach($temp as $k=>&$v){ // 用引用直接替换数组值 } foreach($temp2 as $k=>$v){ / ...
- java音视频编解码问题:16/24/32位位音频byte[]转换为小端序short[],int[],以byte[]转short[]为例
前言:Java默认采用大端序存储方式,实际编码的音频数据是小端序,如果处理单8bit的音频当然不需要做转换,但是如果是16bit或者以上的就需要处理成小端序字节顺序. 注:大.小端序指的是字节的存储顺 ...
- windows手动搭建Kotlin命令行环境
kotlin官网:https://kotlinlang.org 我们可以从GitHub下载.目前最新版本是1.1.2-5 https://github.com/JetBrains/kotlin/rel ...
- android蓝牙学习
学习路线 1 蓝牙权限 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses ...
- 二阶段项目所遇问题 如何实现php向js传输数据
首先当前页面做了一个双处理的界面,就是有PhP也有JS的处理界面. 上一个传值界面是一个PHP的传值,结果,在当前页面的JS中也要用到上一界面传的值,这时发现,PHP与JS就像是两个互相孤立的小岛,根 ...
- [转] 传说中的WCF
这个解决方案中包含两个项目,一个叫Server,另一个叫Client,天生一对. 1.启动VS 2010,推荐用2010以上版本(2012 RC版也行),因为越高版本越好用,最好Express的,不要 ...
- docker 汇总
整理中 ... 一. docker 基础 配置参数最佳实践 二. docker 编排工具 docker swarm mesos kubernetes AWS ECS 三. docker 生态 dock ...
- python 标准库 -- shutil
shutil shutil.move(src,dst) shutil.move('/tmp/20170223/new','/tmp/20170223/test') # 移动文件, 重命名等 shuti ...
- python 导入informixdb模块
最近碰到Linux平台使用python连接informixdb数据库的问题.整理如下: 1.安装 informixdb 下载InformixDB-2.5.tar.gz 解压之后,在README文档下看 ...
- 不支持placeholder浏览器下对placeholder进行处理
if(document.createElement('input').placeholder !== '') { $('[placeholder]').focus(function() { var i ...