加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用VB 代码读取 Excel 内容

发布时间:2020-12-17 07:33:16 所属栏目:百科 来源:网络整理
导读:引子 常规的方法可能是循环读取每一行每一个格子的内容并存入 Recordset 并保存 此处使用Open Recordset 的方式,将 Excel Worksheet 作为一个数据源直接读取 速度将是数量级的差别,几万笔记录的情况下,将由几十秒,甚至几分钟,加快至几秒钟 解决代码 '导

引子

常规的方法可能是循环读取每一行每一个格子的内容并存入 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

可能的问题

  • 有时会出现读取到记录,但实际内容却为 Empty 的情况
  • 有时则出现读取到内容,但在后续使用时其中的值均变为 Empty 的情况

解决方法

  1. <推荐>最大的可能是因为在使用 Recordset.Open() 方式打开Excel 文件时,那个文件已经被 Excel Application 打开,故有时会导致此情况,最简单的办法即在使用Open()方式之前关闭Excel Object;
  2. 另一个方法是完全处理完成数据(如保存至DB Table)后,再关闭或释放Excel Object

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读