引子
常规的方法可能是循环读取每一行每一个格子的内容并存入 Recordset 并保存
此处使用Open Recordset 的方式,将 Excel Worksheet 作为一个数据源直接读取
速度将是数量级的差别,几万笔记录的情况下,将由几十秒,甚至几分钟,加快至几秒钟
解决代码
'导入Excel 文件内容
'Excel 格式为 Excel 2007 之上的 .xlsx 格式,需使用 ACE 读取
'其中的 HDR=No (Yes) 代表是否处理第一行的标题行
Private Function ImportExcelSheetData(ByVal p_sExcelFilePath As String,ByVal p_sSheetName As String) As Boolean
On Error GoTo errHandler
ImportExcelSheetData = False
Dim cn As New ADODB.Connection
Set m_rstImportData_Excel = New ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & p_sExcelFilePath & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
m_rstImportData_Excel.Open "SELECT * FROM [" & p_sSheetName & "$]",cn,adOpenStatic,adLockOptimistic
ImportExcelSheetData = True
errHandler:
If Err.Number <> 0 Then
Screen.MousePointer = vbDefault
MsgBox Err.Description,vbOKOnly + vbExclamation,"ImportExcelSheetData"
End If
End Function