日期:2014-05-17 浏览次数:20452 次
/// 将一组对象导出成EXCEL /// </summary> /// <typeparam name="T">要导出对象的类型<peparam> /// <param name="objList">一组对象</param> /// <param name="FileName">导出后的文件名</param> /// <param name="columnInfo">列名信息</param> public static void ExExcel<T>(List<T> objList, string FileName, Dictionary<string, string> columnInfo) { var tp = objList.First().GetType().GetProperties(); if (columnInfo.Count == 0) { return; } if (objList.Count == 0) { return; } //生成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 == 0) { return; } excelStr += "\n"; foreach (T obj in objList) { foreach (PropertyInfo p in myPro) { if (tp.ToList().Exists(c => c.Name.ToLower() == p.Name.ToLower())) { object pv = p.GetValue(obj, null); pv = pv == null ? "-" : pv; excelStr += pv + "\t"; } } excelStr += "\n"; } //输出EXCEL HttpResponse rs = System.Web.HttpContext.Current.Response; rs.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); rs.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); rs.ContentType = "applicationnd.ms-excel"; rs.Write(excelStr); rs.End(); }