2017-11-14 1 views
-1

私は、GridViewからExcelにデータをエクスポートするためのVBコードのサンプルをいくつかテストしました。すべてが遅すぎて実用的ではありませんでした。私はGridViewで200k行以上を処理しています。すべてがSQL ServerからGridViewに非常に迅速にロードされますが、GridViewからExcelに移動するのは非常に遅いです。 200k行のデータをループするのではなく、すべてを配列にロードするなど、Excelにデータをすばやく移動する方法があるかどうかを知りたいと思います。GridViewからExcelにデータを非常に効率的にエクスポートする方法は何ですか?

また、CSVに書き込んでExcelで開くことはできますか?それがかなり速ければ、確かに私の選択肢になるかもしれません。

あなたの知恵の専門家を共有してくれてありがとう。

+0

いくつかの方法があります。これが引き起こされる方法、あなたは意見を求めています。 – Plutonix

+0

私はCSVが最も速いと思いますが、IIRCの「Excel.Range.Value2」では、各セルを一度に1つずつ書き込むのではなく、配列を送信できます。 – SSS

+0

いいえ、私は意見を求めているのではなく、実際の解決策を探しています。 @SSS、私は明日オフィスに着くときにそれを見ていきます。ありがとう。 – ryguy72

答えて

1

私はCSVが最速であると思いますが、Excel.Range.Value2はあなたではなく、一度に各セル1を埋めるよりも、配列を送信することができます:

Dim xl As New Excel.Application 'always use a variable to reference Excel, otherwise it may stay in memory, hidden.' 
Dim b As Excel.Workbook = xl.Workbooks.Add 'do not use b = New Excel.Workbook, as this can cause a memory leak' 
Dim s As Excel.Worksheet 

xl.Visible = True 
Dim sLast As Excel.Worksheet = b.Worksheets(b.Worksheets.Count) 
b.Worksheets.Add(, sLast) 
s = b.Worksheets(1) '1-based' 
Dim o(199999, 1) As Object 
For i As Integer = 0 To 199999 
    o(i, 0) = i.ToString 
    o(i, 1) = (200000 - i).ToString 
Next i 
s.Name = "ExcelDemo" 
Dim r As Excel.Range = s.Range("A1", "B200000") 
r.Value2 = o 
s.Activate() 
Dim strFilename As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\Junk" 'N.B. extension automatically added' 
b.SaveAs(strFilename) 
strFilename = b.FullName 'get full filename' 
xl.Quit() 
MsgBox(strFilename & " saved") 
+0

の下にサンプルコードを掲載しました。上記のコードは、私のマシン上でかなり素早く200Kの行ファイルを作成します。 – SSS

+0

共有していただきありがとうございます。 – ryguy72

関連する問題