/// <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. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

    要求:以左右孩子表示法实现链式方式存储的二叉树(lson—rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...

  2. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Weixin' did not find a matching property.

    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclips ...

  3. 134. Gas Station (Array; DP)

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  4. mongo嗅探器mongosniff

    mongo嗅探器 在更高版本被mongoreplay取代. 安装: 在Ubuntu直接apt-get install mongodb即包含有. 使用方法 直接--help查看使用方法,一般使用: mo ...

  5. python2.7中可以使用到的一些模块地址

    1.reportlab:由很多部分组成且允许用户使用多种方法创建输出,地址: 下载ReportLab https://pypi.python.org/simple/reportlab/ http:// ...

  6. 6-Linux 上mysql的常用命令 以及 tomcat的相关指定

    mysql -u root -p 进入Mysql //注意一下有逗号!!! show databases; //显示所有的数据库 drop database mydb; // 删除mydb这个数据库 ...

  7. 5-Qt读取文件失败原因

    刚开始准备读取当前目录下的txt文件: QFile file(":/xuhao.txt");或者: QFile file("./xuhao.txt"); 但是一 ...

  8. 1-QT-文件操作

    Qt文本文件的读写操作 Qt文件操作详解(创建.写入.删除.INI.XML文件等 二进制文件的读写文件可以使用QFile类.QStream文本文件的读写建议使用QTextStream类,它操作文件更加 ...

  9. iOS开发总结

    最近在工作中使用Objective-C开发iOS客户端程序,它一方面和Server通讯,处理网络连接,收发报文,实现业务逻辑;另一方面为UI层提供各种业务API.   下面记录用到的相关知识点,困难, ...

  10. 建表Table

    Sstudent表   学  号    Sno  姓  名   Sname   性  别    Ssex     年  龄      Sage   所 在 系    Sdept   200215121 ...