/// <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() + "&nbsp;</td>";
continue;
}
xls += @"<td>" + value + "&nbsp;</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的更多相关文章

  1. SSM poi通过模板 反射导出excel

    1 import java.lang.reflect.Field; 2 import java.lang.reflect.Method; 3 import java.util.Iterator; 4 ...

  2. 反射导出excel案例

    1.代码案例: protected void btnExportExcel_Click(object sender, EventArgs e) { SetSearchValue(); Dictiona ...

  3. NPOI操作EXCEL(四)——反射机制批量导出excel文件

    前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...

  4. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

  5. 海量数据Excel报表利器——EasyExcel(一 利用反射机制导出Excel)

    EasyExcel 写入(导出) 互联网的精髓就是共享,可以共享技术.共享经验.共享情感.共享快乐~ 很多年前就有这个想法了,从事IT行业时间也不短了,应该把自己工作和业余所学习的东西记录并分享出来, ...

  6. 利用poi导出Excel

    import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.r ...

  7. Npoi导入导出Excel操作

    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...

  8. ExtJS Grid导出excel文件

    ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...

  9. NPOI MVC 模型导出Excel通用类

    通用类: public enum DataTypeEnum { Int = , Float = , Double = , String = , DateTime = , Date = } public ...

随机推荐

  1. [udemy]WebDevelopment_History of The Web

    WWW vs Internet For the begining, Internet was there. it was for the academics among universities Th ...

  2. 11-st跳舞消耗体力最少

    /*                                                   炫舞家 ST 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述   ...

  3. js深拷贝、浅拷贝

    浅拷贝: 只针对当前对象的属性进行拷贝,若当前对象的属性是引用类型时,这个不考虑,不进行拷贝.若属性是引用类型,拷贝后引用的是地址,如果进行更改,会影响拷贝的原对象属性. 深拷贝:针对当前对象的数据的 ...

  4. vmware fusion 10序列号

    vmware fusion pro  10序列号   亲测可用激活 FG3TU-DDX1M-084CY-MFYQX-QC0RD

  5. FTP 搭建

    FTP 搭建 FTP 是 File Transfer Protocol(文件传输协议)的英文简称,它工作在 0SI 模型的第七层,TCP 模型的第四屋上,即应用层. 一.FTP 简介 FTP 会话时包 ...

  6. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  7. Confluence无法打开编辑器,一直在转圈

    在管理员界面中,将Collaborative editing 设置为Off 或者 Limited . 快速找到该界面的方式是,在搜索框里搜索 “Collaborative editing”. 折腾了几 ...

  8. css3新增功能

    CSS3新增功能 1 CSS3选择器详解 1.1 基础选择器 通配选择器* 元素选择器E ID选择器#id CLASS选择器.class 群组选择器select1,selectN 1.2 层次选择器 ...

  9. 2018.09.17 atcoder Digit Sum(数论)

    传送门 数论好题啊. 首先对于b<=sqrt(n)b<=sqrt(n)b<=sqrt(n)的情况直接枚举b判断一下就行了. 下面谈一谈如何解决b>sqrt(n)b>sqr ...

  10. select自定义下拉选择图标

    闲言少叙: 上CSS: appearance: none; -moz-appearance: none; -webkit-appearance: none; cursor: pointer; back ...