反射导出 Excel
/// <summary>
/// List 数据导出Excel
/// </summary>
/// <param name="list">数据</param>
/// <param name="filename">文件名称</param>
/// <param name="ColumNames">标题名(数组-所有标题)</param>
/// <param name="FileNames">标题名对应的数据库字段名称(数组-标题对应字段)</param>
public void HtmlToExcel<T>(IList<T> list, string filename, string[] ColumNames, string[] FileNames)
{
// 通过反射获取该类 下面所有公共属性值
PropertyInfo[] propertyInfos = list.First().GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
int i, j, s = ;
//拼接HTML Table数据结构
string xls = @"<Table border='1'><tr>";
//添加Excel中第一行的标题
for (i = ; i < ColumNames.Length; i++)
{
xls += @"<td>" + ColumNames[i] + @"</td>";
}
xls = xls + @"</tr>";
//添加Excel数据
foreach (T item in list)
{
xls += @"<tr>";
if (list == null)
{
continue;
}
for (int m = ; m < FileNames.Length; m++)
{
for (s = ; s < propertyInfos.Length; s++)
{
PropertyInfo pi = propertyInfos[s];
// 判断反射得到的属性 和 传入进来的 FileNames 中的值是否相同
//如何相同就得到它的值
if (pi.Name == FileNames[m])
{
string value = string.Format("{0}", pi.GetValue(item, null));
DateTime date;
//判断是否日期 转换短日期
if (DateTime.TryParse(value, out date))
{
xls += @"<td>" + date.ToShortDateString() + " </td>";
continue;
}
xls += @"<td>" + value + " </td>";
}
}
}
xls += @"</tr>";
}
xls = xls + @"</Table>"; //清空输出缓存、设置编码、输出类型
HttpContext.Current.Response.Clear();
// 指定返回的是一个不能被客户端读取的流,必须被下载
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.xls", filename));
HttpContext.Current.Response.Write(xls);
HttpContext.Current.Response.End();
}
#endregion
反射导出 Excel的更多相关文章
- SSM poi通过模板 反射导出excel
1 import java.lang.reflect.Field; 2 import java.lang.reflect.Method; 3 import java.util.Iterator; 4 ...
- 反射导出excel案例
1.代码案例: protected void btnExportExcel_Click(object sender, EventArgs e) { SetSearchValue(); Dictiona ...
- NPOI操作EXCEL(四)——反射机制批量导出excel文件
前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...
- Java基于注解和反射导入导出Excel
代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...
- 海量数据Excel报表利器——EasyExcel(一 利用反射机制导出Excel)
EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...
- 利用poi导出Excel
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...
- Npoi导入导出Excel操作
之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...
- ExtJS Grid导出excel文件
ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...
- NPOI MVC 模型导出Excel通用类
通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...
随机推荐
- Windows phone 自定义用户控件(UserControl)——ColorPicker
编码前 学习Windows phone自定义用户控件,在<WPF编程宝典>学习的小例子.并根据windows phone稍微的不同,做了点修改.ColorPicker(颜色拾取器):拥有三 ...
- fckeditor 数据库 取值 显示
用fckeditor把html代码存到数据库中,取出来显示的时候用什么控件呢?用Literal 或 Label 控件.
- div+css隐藏内容样式方法
div css隐藏内容样式方法 div+css隐藏内容方法 一般情况下,css隐藏的用途,如下: 1.对文本的隐藏 2.隐藏超链接(另类黑链) 3.对统计代码隐藏 4.隐藏超出图片 5.css ...
- Windows10电脑安装macOS Mojave系统的方法(最新版系统,含超详细步骤截图)
一.环境及准备工作 1.主机系统:本人系统是Windows10家庭中文版 2.虚拟机软件:VMware Workstation 14 Pro 虚拟机版本号:14.1.1 build-7528167 虚 ...
- UI设计小白怎样学才能快速入门?
最近有很多同学问我,UI小白有什么捷径可以快速入门?其实我想说设计这门学科没有什么捷径,真的只有多学.多看.多练.多想.多做. 1.先学软件 如果你是小白,软件也不会用,那就先学软件,从PS开始,先看 ...
- [Selenium]对弹出的Alert窗口进行操作
Alert alert = driver.switchTo().alert(); alert.accept();
- 如何使用webpack打包前端项目
webpack概述 随着前端体积越来越大,功能越来越丰富,这时候就需要将前端工程化,而 webpack就是用于将前端各种文件打包起来. 一个简单的webpack应该包含以下几个概念 · 入口起点 · ...
- Mac下PHP+MySQL+Apache2环境搭建
本机系统信息如下: -------------------------------------------------------------------------------------- OS: ...
- 2018.09.17 atcoder Tak and Hotels(贪心+分块)
传送门 一道有意思的题. 一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的. 但是贪心思想一定是对的,每 ...
- 2018.08.01 BZOJ4552: [Tjoi2016&Heoi2016]排序(二分+线段树)
传送门 线段树简单题. 二分答案+线段树排序. 实际上就是二分答案mid" role="presentation" style="position: relat ...