前提・実現したいこと
現在、SQL文で取ってきたデータをエクセル出力しているのですが、もっと高速に処理を終えたいです。
具体的には、Excelに貼り付ける処理を現在はセルに一つ一つに入れているため遅いので二次元配列を使用したいと思っているのですが、初心者なので二次元配列の使用したパターンのソースがわからず困っています。
今後のために二次元配列での出力方法を身に付けたいと思っているためどなたかご教授頂けると幸いです。
Excelへの出力はInterop.Excelを使用しています。
発生している問題・エラーメッセージ
特になし 処理が重たい
該当のソースコード
VB
1 Using dr As SqlDataReader = cmd.ExecuteReader() 2 Dim RngTitle(0, 10) As Object 3 'Dim RngKotei(0, 1) As Object 4 Do While dr.Read() 5 '//EXCELセルへデータセット 6 xlRange = xlTargetTailSheet.Range(xlTargetTailSheet.Cells(ix1, 1), xlTargetTailSheet.Cells(ix1, 11)) 7 RngTitle(0, 0) = Sub_Null_Convert(dr.Item("1"), "") 8 RngTitle(0, 1) = Sub_Null_Convert(dr.Item("2"), "") 9 RngTitle(0, 2) = Sub_Null_Convert(dr.Item("3"), "") 10 RngTitle(0, 3) = Sub_Null_Convert(dr.Item("4"), "") 11 RngTitle(0, 4) = Sub_Null_Convert(dr.Item("5"), "") 12 RngTitle(0, 5) = Sub_Null_Convert(dr.Item("6"), "") 13 RngTitle(0, 6) = Sub_Null_Convert(dr.Item("7"), "") 14 RngTitle(0, 7) = Sub_Null_Convert(dr.Item("8"), "") 15 RngTitle(0, 8) = Sub_Null_Convert(dr.Item("9"), "") 16 RngTitle(0, 9) = Sub_Null_Convert(dr.Item("10"), "") 17 RngTitle(0, 10) = Sub_Null_Convert(dr.Item("11"), "") 18 'RngTitle(0, 11) = Sub_Null_Convert(dr.Item("12"), "") 19 'RngTitle(0, 12) = Sub_Null_Convert(dr.Item("13"), "") 20 xlRange.Value = RngTitle 21 ix1 += 1 22 23 24 '//進捗表示 (アニメーション無効) 25 Row_Count += 1 26 labRowCount.Text = Row_Count 27 Dim val As Integer = Row_Count * 100 / Result_Count 28 If val < ProgressBar1.Maximum Then 29 ProgressBar1.Value = val + 1 30 ProgressBar1.Value = val 31 Else 32 ProgressBar1.Maximum += 1 33 ProgressBar1.Value = val + 1 34 ProgressBar1.Value = val 35 ProgressBar1.Maximum -= 1 36 End If 37 Application.DoEvents() 38 39 'Writer1.WriteLine(sub_GetLogHeader() & "06.EXCEL明細記入NO." & labRowCount.Text) 40 Logger(LogFile, "06.EXCEL明細記入NO." & labRowCount.Text) 41 42 Loop 43 44 End Using 45 46 End Using
補足情報(FW/ツールのバージョンなど)
VisualStudio2017,SQLServer