Veľmi dobre, používam toto generikum /// <summary> Exportujte sadu objektov do EXCELu /// </summary> <typeparam name="T"> typ objektu, ktorý chcete exportovať</typeparam> <param name="objList" > množina objektov</param> <názov parametra="FileName"> exportovaný názov súboru</param> <názov parametra="columnInfo"> informácie o názve stĺpca</param> public void ListToExcel <T>(List<T> objList, string FileName, Dictionary<string, string>columnInfo) { if (columnInfo.Count == 0) { return; } if (objList.Count == 0) { return; } Generovať EXCEL HTML string excelStr = ""; Typ myType = objList[0]. GetType(); Na základe reflexie sa atribút, ktorý sa má zobraziť, získava z informácií o názve atribútu zadaných v List<System.Reflection.PropertyInfo> myPro = nový List<System.Reflection.PropertyInfo>(); foreach (reťazec cName v columnInfo.Keys) { System.Reflection.PropertyInfo p = myType.GetProperty(cName); ak (p != null) { myPro.Add(p); excelStr += columnInfo[cName] + "\t"; } } Ak sa nenájdu žiadne dostupné atribúty, končí ak (myPro.Count == 0) { return; } excelStr += "\n"; foreach (T obj v objList) { foreach (System.Reflection.PropertyInfo p v myPro) { excelStr += p.GetValue(obj, null) + "\t"; } excelStr += "\n"; } Výstup EXCEL HttpResponse rs = System.Web.HttpContext.Current.Response; rs. ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); rs. AppendHeader("Content-Disposition", "attachment; názov súboru=" + názov súboru); rs. ContentType = "application/ms-excel"; rs. Write(excelStr); rs. end(); } |