ASP.NETで開発しております。
ACE12AccessDatabaseEngineを使用してDataTableに格納されているデータを
Excelに書き込んでいます。
書き込んだデータ量は30000行、横列100項目でファイルサイズがおよそ50MBになります。
その際の処理時間は38分位かかっています。
高速に処理を行う方法はないでしょうか?
ご教授お願い致します。
ソースコードについては以下になります。
'カラム名の設定
With sbSQL
.Remove(0, .Length)
.AppendLine("CREATE TABLE [Sheet1] ( ")
For i = 0 To dataTable.Columns.Count - 1
If i <> dataTable.Columns.Count - 1 Then
If i <> dataTable.Columns.Count - 2 Then
.AppendLine(dataTable.Columns.Item(i).ColumnName & " " & "CHAR(255), ")
Else
.AppendLine(dataTable.Columns.Item(i).ColumnName & " " & "CHAR(255) ")
End If
Else
.AppendLine(") ")
End If
Next
End With
Using cmd As New OleDbCommand(sbSQL.ToString, con)
cmd.ExecuteNonQuery()
End Using
'データの設定
With sbSQL
.Remove(0, .Length)
.AppendLine("INSERT INTO [Sheet1] VALUES ( ")
For i = 0 To dataTable.Columns.Count - 1
If i <> dataTable.Columns.Count - 1 Then
If i <> dataTable.Columns.Count - 2 Then
.AppendLine(dataTable.Columns.Item(i).ColumnName & ", ")
Else
.AppendLine(dataTable.Columns.Item(i).ColumnName)
End If
Else
.AppendLine(") ")
End If
Next
End With
'書き込み
Using cmd As New OleDbCommand(sbSQL.ToString, con)
For i = 0 To dataTable.Rows.Count - 1
cmd.Parameters.Clear()
For j = 0 To dataTable.Columns.Count - 1
cmd.Parameters.Add(New OleDbParameter(dataTable.Columns.Item(j).ColumnName, dataTable.Rows(i).Item(j)))
Next
cmd.ExecuteNonQuery()
Next
End Using