我看不懂这段代码,这是我从网上找来的
/// <summary> /// 将一组对象导出成EXCEL /// </summary> /// <typeparam name="T">要导出对象的类型</typeparam> /// <param name="objList">一组对象</param> /// <param name="FileName">导出后的文件名</param> /// <param name="columnInfo">列名信息</param> public void ExExcel<T>(List<T> objList, string FileName, Dictionary<string, string> columnInfo) { if (columnInfo.Count == 0) { return; } if (objList.Count == 0) { return; } //生成EXCEL的HTML string excelStr = ""; Type myType = objList[0].GetType(); //根据反射从传递进来的属性名信息得到要显示的属性 List<System.Reflection.PropertyInfo> myPro = new List<System.Reflection.PropertyInfo>(); foreach (string cName in columnInfo.Keys) { System.Reflection.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 (System.Reflection.PropertyInfo p in myPro) { excelStr += p.GetValue(obj, null) + "\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 = "application/ms-excel"; rs.Write(excelStr); rs.End(); }
就是关于这个Dictionary<string, string> columnInfo参数,怎么去设置呀
还是使用npoi进行excel导出吧
Dictionary<string, string) columnInfo=new Dictionary<string, string);
columnInfo.add("column1", "列标题1");
columnInfo.add("column2", "列标题2");
"column1" and "column2" is the field name of your table.
"列标题1" AND "列标题2" is the column header string that you want to show.
columnInfo 存的就是列header信息,key是obj的属性名,value是header name
ps:1.反射效能不高,在大量数据的时候性能可能会有问题
2.code中唯一与excel有关的就是rs.ContentType = "application/ms-excel";了,content其实就是普通的string,用制表符\t分隔开而已,几乎不存在格式而言,你用的话需要拼写html,调整style也是将是一个比较大的工作量~
有没有好的方法呀?因为我用的是 var ss = ydc.GameScore.OrderByDescending(g => g.Score).GroupBy(g => g.UserPhone).Select(g => g.First()).ToList();
这个linq to sql来获取数据的,所以,这句语句就是获取数据库里面的数据,转变成集合了,怎么把它导出到Excel呢?
@魔女小溪:
npoi
list还是datable只是数据源而已,都可以输出到excel,只是处理数据显示过程的区别,这部分你可以自己写code处理的
一点个人理解
list是数据源
判断数据源中是否有数据,没有数据不导出
创建Excel对象,设置第一行,即列名
按照Excel规则拼装数据,在内存中构建时数据流
给数据流加上头信息
输出数据流,输出完毕即结束输出。。。。
好像以上很抽象的说,不知道您懂了没,我也觉着有点言之无物