哪个哥哥,姐姐,叔叔,阿姨可以给我讲讲通过VB语言读取Excel表格的内容
我的原始资料是多个单个的EXCEL表格,我目的是将它们依次读入到数据库

解决方案 »

  1.   

    首先在工程中引用Execl对象库    Dim objExecl As Excel.Application   
            
        '** 打开execl表格文件
        Set objExecl = New Excel.Application
        objExecl.Workbooks.Open execl文件名 
        
        objExecl.Cells(r, c)  'r行c列单元格的值工程引用execl对象后,具体的objExecl中各种方法和属性可以在VB的对象浏览器中找到。在execl中也可以找到。
      

  2.   

    http://54uc.com/asppost13/web244811.htm
      

  3.   

    Dim fileName as string
        Dim objExcel As Excel.Application
        fileName=""
        Set objExcel = New Excel.Application
        'open the file
        objExcel.Workbooks.Open fileName
        
        'operate the file
        Text1.Text = objExcel.Cells(rowNum,cellNum)
        
        'close the file
        objExcel.Workbooks.Close
        Set objExcel = Nothing
      

  4.   

    直接用SQL處理,用導入導出,或
    select * into AA from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\book1.xls',sheet1$)
    不通過VB不是更簡單
      

  5.   

    你直接在SQL数据库中直接导入不就可以了吗?在FAQ里边有,你搜索一下
      

  6.   

    首先谢谢各位,也许是我没有说清楚,老师规定的用编程语言,不是导入导出工具,其实我有代码,就是自己看不懂,哪位哥哥姐姐对VB很熟悉,请加我QQ26275068
      

  7.   

    '自己修改一下
    '首先在工程中引用Execl对象库
    Private MyExcel As New Excel.ApplicationPrivate Sub cmdOK_Click()
        Dim eRows As Long
        Dim eCols As Long
        Dim i As Long
        Dim j As Long
        Dim c1() As String
        Dim SQL As String
        MyExcel.Workbooks.Open App.Path & "\Book1.xls"
        eRows = MyExcel.Sheets(1).UsedRange.Rows.Count  'excel 的行數
        eCols = MyExcel.Sheets(1).UsedRange.Columns.Count 'excel 的列數
        ReDim c1(eRows) As String
        For i = 1 To eRows
            c1(i) = Trim(MyExcel.Worksheets(1).Cells(i, 1))
        Next i
        
     
        MsgBox "完成"
        MyExcel.Workbooks.Close
        Set MyExcel = Nothing
    End Sub
      

  8.   

    在VB中怎样读取Excel中保存的数据?
     
     回复人: lihonggen0(李洪根,MS MVP,标准答案来了) ( ) 信誉:294  2003-05-16 10:18:55Z  得分:0  
     
     

    引用Excel 对象    Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet    Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open(....
        Set xlSheet = xlBook.Worksheets(1)
        xlSheet.Cells(1, 4).Value = "aaa" 
    Top 
     
     回复人: ch21st(www.blanksoft.com) ( ) 信誉:105  2003-05-16 10:57:19Z  得分:0  
     
     

    我说一种dao的方法(也可用ado)
    假如excel数据
    male female children teens
    11 cc 78 ee
    22 xx 33 ff
    45 uu 56 oo
    用ISAM第一行略过
    在excel中定义名称(插入-名称-定义)
    名称范围 : myRange1male female children teens名称范围  : myRange211 cc 78 ee
    22 xx 33 ff
    45 uu 56 ooprivate Sub Command_click1im dbtmp As DAO.Database
    im tblObj As DAO.TableDef
    im rs As DAO.Recordsetet dbtmp = OpenDatabase_
    ("<complete path>\test.xls", False, True, "Excel 8.0;")DoEventsSet rs = dbtmp.OpenRecordset("select * from `myRange2`")
    While Not rs.EOF
    For x = 0 To rs.Fields.Count - 1
    Debug.Print rs.Fields(x).Value
    Next
    rs.MoveNext
    Wend
    End Sub在myRange2两边加'号.结果11
    cc
    78
    ee
    22
    xx
    33
    ff
    45
    uu
    56
    oo              ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------   
     
    Top 
     
     回复人: ch21st(www.blanksoft.com) ( ) 信誉:105  2003-05-16 11:00:32Z  得分:0  
     
     

    ado方法
    Dim adoConnection As New ADODB.Connection 
        Dim adoRecordset As New ADODB.Recordset 
        'OLE DB + ODBC Driver 方式: 
        'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls" 
        'Microsoft.Jet.OLEDB.4.0 方式,(建议) 
        adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.xls;Extended Properties='Excel 8.0;HDR=Yes'" 
         
        adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic 
        Debug.Print adoRecordset.RecordCount 
        Dim i As Integer 
        Do Until adoRecordset.EOF 
         For i = 0 To adoRecordset.Fields.Count - 1 
         Debug.Print adoRecordset.Fields.Item(0).Name 
         Debug.Print adoRecordset.Fields.Item(0).Value 
         Next i 
         adoRecordset.MoveNext 
        Loop 
         
        '注: OLE DB + ODBC Driver 方式不支持以下语句,但 Microsoft.Jet.OLEDB.4.0 方式支持! 
        adoConnection.Execute "insert into [sheet1$](F1) values(3)" 
        adoRecordset.AddNew Array("f1", "f2", "f3", "f4"), Array(1, 2, 3, 4)               ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------   
     
    Top 
     
     回复人: lihonggen0(李洪根,MS MVP,标准答案来了) ( ) 信誉:294  2003-05-16 12:16:38Z  得分:0  
     
     

    可以使用ado直接调用EXCEL的数据,而不需要使用ACCESS。 
        Dim oConn As New ADODB.Connection 
        Dim oRS As New ADODB.Recordset 
        oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
         "Data Source=C:\Book1.xls;" & _ 
         "Extended Properties=""Excel 8.0;""" 
        oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic '打开Sheet1,也可以是定义的名称,或一个Range。 
        .. 
        .. 
        .. 
        oRS.Close 
        oConn.Close 
        更具体的方法可以参考微软的Knowledge Base的文章:“Q278973 xcelADO Demonstrates How To Read/Write Data in Excel Workbooks”。 
        用这个方法调用EXCEL数据是非常快的。能否用VB的ADO的方法访问Excel文件,如果能该怎样实现?Dim adoConnection As New ADODB.Connection 
        Dim adoRecordset As New ADODB.Recordset 
        'OLE DB + ODBC Driver 方式: 
        'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls" 
        'Microsoft.Jet.OLEDB.4.0 方式,(建议) 
        adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.xls;Extended Properties='Excel 8.0;HDR=Yes'" 
         
        adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic 
        Debug.Print adoRecordset.RecordCount 
        Dim i As Integer 
        Do Until adoRecordset.EOF 
         For i = 0 To adoRecordset.Fields.Count - 1 
         Debug.Print adoRecordset.Fields.Item(0).Name 
         Debug.Print adoRecordset.Fields.Item(0).Value 
         Next i 
         adoRecordset.MoveNext 
        Loop 
         
        '注: OLE DB + ODBC Driver 方式不支持以下语句,但 Microsoft.Jet.OLEDB.4.0 方式支持! 
        adoConnection.Execute "insert into [sheet1$](F1) values(3)" 
        adoRecordset.AddNew Array("f1", "f2", "f3", "f4"), Array(1, 2, 3, 4) 微软的答案:
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q278/9/73.asp&NoWebContent=1 
    Top 
     
     回复人: lihonggen0(李洪根,MS MVP,标准答案来了) ( ) 信誉:294  2003-05-16 12:17:11Z  得分:0  
     
     

    微软的答案:
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q278/9/73.asp&NoWebContent=1