C# list导出Excel(二)

本文介绍了一种使用StringBuilder快速导出Excel文件的方法,通过反射获取属性并逐行写入数据,显著提高了导出效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇写的那个那个导出Excel的方法导出Excel的时间慢,后面想了个别的方法,导出Excel的时间很快

 1 public string CreateAdvExcel(IList<DocAdvInfo> lt)
 2         {
 3             StringBuilder builder = new StringBuilder();
 4             Random rn = new Random();
 5             string name = rn.Next(9999) + ".xls";
 6             string path = Server.MapPath("\\Document\\" + name);
 7             System.Reflection.PropertyInfo[] myPropertyInfo = lt.First().GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
 8             int i = 0, j;
 9             for (i = 0, j = myPropertyInfo.Length; i < j; i++)
10             {
11                 System.Reflection.PropertyInfo pi = myPropertyInfo[i];
12                 string headname = pi.Name;//单元格头部
13                 builder.Append(headname);
14                 builder.Append("\t");
15             }
16             builder.Append("\n");
17             foreach (DocAdvInfo t in lt)
18             {
19                 if (lt == null)
20                 {
21                     continue;
22                 }
23                 for (i = 0, j = myPropertyInfo.Length; i < j; i++)
24                 {
25                     System.Reflection.PropertyInfo pi = myPropertyInfo[i];
26                     string str = string.Format("{0}", pi.GetValue(t, null)).Replace("\n", "");
27                     if (str == "")
28                     {
29                         builder.Append("\t");
30                     }
31                     else
32                     {
33                         builder.Append(str + "\t");//横向跳到另一个单元格
34                     }
35                 }
36                 builder.Append("\n");//换行
37             }
38             StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.GetEncoding("GB2312"));
39             sw.Write(builder.ToString());//输出
40             sw.Flush();
41             sw.Close();

转载于:https://www.cnblogs.com/Jin-1007/archive/2012/04/24/2468129.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值