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();
        }

    }

 

posted @ 2009-07-03 14:35  调调儿  阅读(519)  评论(4编辑  收藏  举报