Private Function CreateConnString(ByVal Str As String) As String
Return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Str & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"""
End Function
...
For Each sMatl_Num As String In alMaterialNumbers
ifileNo = 1
dbConnection.ConnectionString = CreateConnString(sExcelDBPath)
dbCommand.Connection = dbConnection
dbCommand.CommandText = "SELECT [col1], [col2], [col3], [col4], [col5], [col6] FROM [sheet$] WHERE [material]='" & sMatl_Num & "'" & " AND [col3] IS NOT NULL" & " AND [col6] IS NOT NULL"
dbConnection.Open()
dbReader = dbCommand.ExecuteReader()
If dbReader.HasRows Then
Do While dbReader.Read
sCol1= dbReader.GetString(0).ToString
sCol2= dbReader.GetString(1).ToString
sCol3= dbReader.GetString(2).ToString
sCol4= dbReader.GetString(3).ToString
sCol5= dbReader.GetString(4).ToString
sCol6= dbReader.GetString(5).ToString
'Write txt file with name and content derived from these strings
Loop
End If
dbReader.Close()
dbConnection.Close()
Next
我在查詢使用oledb的Excel文件。有相當多的列從每行獲取數據。這是瘋狂地運行緩慢。有什麼方法可以優化這個嗎?數組列表的數量約爲23k。用於查詢Excel的多個打開命令oledb連接
您*可*一次將整個文件讀入到Datatable中,然後應用過濾器一次處理其中的部分內容。我不確定它會更快,但它會減少數據庫操作 – Plutonix
您不需要'GetString'頂部的'ToString'。我懷疑這會讓它變得更快:它只是冗餘代碼。 –