我们使用的是不同的框架,我不能使用 .NET GridView。我们有不同的集合类型和专门的网格。(不继承自 .NET 控件)我需要将数据从 Web 导出到 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之后,网站反应很慢。尽管我每 50 行刷新一次,但 2k-3k 行大约需要 5 分钟。我尝试每 100-200 行刷新一次,还尝试将字符串直接写入 Response(我的意思是 Response.Write("") )当我调试时,它循环并且所有时间都在“for循环”中传递。
有没有比这种方式更快地导出数据的更好主意?
注意:“Calls”是继承自 System.Collections.CollectionBase 的集合