以更高的性能将数据从Web导出到Excel

我们正在使用不同的框架,我不能使用.NET GridView。 我们有一个不同的集合types和专门的网格。(不从.NET控件inheritance)我需要将数据从网站导出到MS-Excel。 这是代码。

Me.Response.Clear() Me.Response.ContentEncoding = System.Text.Encoding.GetEncoding(1254) Me.Response.AddHeader("Content-Disposition", "Attachment;filename=Calls.xls") Me.Response.AddHeader("Content-type", "application/ms-excel") For n As Integer = 0 To Calls.Count - 1 Me.Response.Write(Calls(n).ID & Chr(9)) Me.Response.Write(Calls(n).ID & Chr(9)) Me.Response.Write(Calls(n).DateCreated & Chr(9)) Me.Response.Write(Calls(n).Employee.Name & Chr(9)) Me.Response.Write(Calls(n).NetDurationInText & Chr(9)) Me.Response.Write(Calls(n).Result.Name & Chr(9)) Me.Response.Write(vbCrLf) If n Mod 50 = 0 Then Me.Response.Flush() End If Next Me.Response.End() 

但排在2000-3000以后,网站反应很慢。 尽pipe每隔50行刷新一次,2k-3k行大约需要5分钟。 我试图刷新每100-200行,也试图直接写入string响应(我的意思是Response.Write(“”))当我debugging,它循环,所有的时间通过“for循环”。

有没有比这种方式更好的想法导出数据?

注意:“调用”是从System.Collections.CollectionBaseinheritance的集合

如果这是closures,请评论,我会删除。 我是C#,所以我可能会误解。 在你的代码中,你看起来像在编写整个srtBl。

  For n As Integer = 0 To Calls.Count - 1 Me.Response.Write(Calls(n).ID & Chr(9)) Me.Response.Write(Calls(n).DateCreated & Chr(9)) Me.Response.Write(Calls(n).Employee.Name & Chr(9)) Me.Response.Write(Calls(n).Customer.Link.Name & Chr(9)) Me.Response.Write(Calls(n).Vendor.Link.Name & Chr(9)) Me.Response.Write(Calls(n).Result.Name & Chr(9)) Me.Response.Write(vbCrLf) If n Mod 50 = 0 Then Me.Response.Flush() End If Next Me.Response.End() 

我发现了这个问题。 这与我的collections有关。 我可以说这是将数据导出到我发现的最好的方法。