以更高的性能将数据从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有关。 我可以说这是将数据导出到我发现的最好的方法。
- 不知道为什么我得到Excel文件的System.Data.OleDb.OleDbException
- 无法读取Excel表格
- 使用NPOI将数据从一页复制到另一页
- Excel VSTO + C#.NET +创build数据透视表
- 从Excel到SQL Server
- 在不安装Excel的情况下调用Excel插件文件(.xll或.dll)的function的方法?
- 解决“Microsoft.ACE.OLEDB.12.0”提供程序问题,而不安装“Microsoft Access数据库引擎”
- .Net正则expression式来parsingExcel页眉/页脚string
- 保存Excel文件正在将文件访问权限更改为只读