zoukankan      html  css  js  c++  java
  • ASP.NET 把集合导出为Excel的一个助手类

    转别人的,做了个小小改动,增加了一个重载,可以在把集合数据读入Excel之后再增加自定义的一些输出。

    public class ExcelHelper
        
    {
            
    /// <summary>
            
    /// 将一组对象导出成EXCEL
            
    /// </summary>
            
    /// <typeparam name="T">要导出对象的类型</typeparam>
            
    /// <param name="objList">一组对象</param>
            
    /// <param name="FileName">导出后的文件名</param>
            
    /// <param name="columnInfo">列名信息</param>

            public static void ExExcel<T>(List<T> objList, string FileName, Dictionary<stringstring> columnInfo)
            
    {
                ExExcel(objList, FileName, columnInfo, 
    null);
                
            }

            
    /// <summary>
            
    /// 将一组对象导出成EXCEL
            
    /// </summary>
            
    /// <typeparam name="T">要导出对象的类型</typeparam>
            
    /// <param name="objList">一组对象</param>
            
    /// <param name="FileName">导出后的文件名</param>
            
    /// <param name="columnInfo">列名信息</param>
            
    /// <param name="other">追加其他内容</param>

            public static void ExExcel<T>(List<T> objList, string FileName, Dictionary<stringstring> columnInfo, string other)
            
    {
                
    if (columnInfo.Count == 0return; }
                
    if (objList.Count == 0return; }
                
    //生成EXCEL的HTML
                string excelStr = "";

                Type myType 
    = objList[0].GetType();
                
    //根据反射从传递进来的属性名信息得到要显示的属性
                List<PropertyInfo> myPro = new List<PropertyInfo>();
                
    foreach (string cName in columnInfo.Keys)
                
    {
                    PropertyInfo p 
    = myType.GetProperty(cName);
                    
    if (p != null)
                    
    {
                        myPro.Add(p);
                        excelStr 
    += columnInfo[cName] + "\t";
                    }

                }

                
    //如果没有找到可用的属性则结束
                if (myPro.Count == 0return; }
                excelStr 
    += "\n";

                
    foreach (T obj in objList)
                
    {
                    
    foreach (PropertyInfo p in myPro)
                    
    {
                        excelStr 
    += p.GetValue(obj, null+ "\t";
                    }

                    excelStr 
    += "\n";
                }

                
    if (!string.IsNullOrEmpty(other))
                
    {
                    excelStr 
    += other;
                }

                
    //输出EXCEL
                HttpResponse rs = System.Web.HttpContext.Current.Response;
                rs.Clear();
                rs.ContentEncoding 
    = System.Text.Encoding.GetEncoding("GB2312");
                rs.AppendHeader(
    "Content-Disposition""attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, Encoding.UTF8));
                rs.ContentType 
    = "application/ms-excel";
                rs.Write(excelStr);
                rs.End();
            }

        }
  • 相关阅读:
    证明最大公约数Stein算法(高精度算法)
    链表常用内容和易犯错误
    斐波那契数列——各种公式证明
    用矩阵和待定系数法求数列的分析(复杂度log(n))
    盒模型(外边距)
    盒子模型(内边距)
    盒子模型(边框)
    jupyterhub
    1分钟k线图能反映什么?(转)
    python的self
  • 原文地址:https://www.cnblogs.com/weberypf/p/1516291.html
Copyright © 2011-2022 走看看