別のフレームワークを使用しているため、.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 を超えると、Web サイトの応答が非常に遅くなります。50 行ごとにフラッシュしますが、2k ~ 3k 行で約 5 分かかります。100〜200行ごとにフラッシュしようとしましたが、文字列を直接Responseに書き込もうとしました(Response.Write( "")を意味します)デバッグするとループし、すべての時間が「forループ」で通過します。
この方法よりも速くデータをエクスポートするためのより良いアイデアはありますか?
注: "Calls" は、System.Collections.CollectionBase を継承するコレクションです。