Vb6 如何在Visual Basic 6.0中读取Excel文件(97-03)

Vb6 如何在Visual Basic 6.0中读取Excel文件(97-03),vb6,Vb6,有谁能告诉我如何在VisualBasic6.0中读取Excel文件并将所有值导入listview或datagridview中,我想使用一种简单高效的技术来实现这一点。有人能帮我解决这个问题吗?这应该将数据从Excel文件导入ListView: Dim ExcelObj As Object Dim ExcelBook As Object Dim ExcelSheet As Object Dim i As Integer Set ExcelObj = Cre

有谁能告诉我如何在VisualBasic6.0中读取Excel文件并将所有值导入listview或datagridview中,我想使用一种简单高效的技术来实现这一点。有人能帮我解决这个问题吗?

这应该将数据从Excel文件导入ListView:

    Dim ExcelObj As Object
    Dim ExcelBook As Object
    Dim ExcelSheet As Object
    Dim i As Integer

    Set ExcelObj = CreateObject("Excel.Application")
    Set ExcelSheet = CreateObject("Excel.Sheet")

    ExcelObj.WorkBooks.Open App.Path & "\ExcelFile.xls"

    Set ExcelBook = ExcelObj.WorkBooks(1)
    Set ExcelSheet = ExcelBook.WorkSheets(1)

    Dim l As ListItem
    lvwList.ListItems.Clear
    With ExcelSheet
    i = 1
    Do Until .cells(i, 1) & "" = ""
        Set l = lvwList.ListItems.Add(, , .cells(i, 1))
        l.SubItems(1) = .cells(i, 2)
        l.SubItems(2) = .cells(i, 3)
        l.SubItems(3) = .cells(i, 4)
        i = i + 1
    Loop

    End With

    ExcelObj.WorkBooks.Close

    Set ExcelSheet = Nothing
    Set ExcelBook = Nothing
    Set ExcelObj = Nothing

我更倾向于使用某种网格控件,而不是ListView,但是

由于您只是引入没有元数据(格式化)的值,因此可以使用Jet的Excel IISAM之一来实现这一点,它甚至可以在未安装Excel的机器上运行

Dim SheetName As String
Dim RS As ADODB.Recordset
Dim LI As ListItem
Dim I As Integer

'Look up 1st Worksheet (or just hardcode its Name).
'
'Notes:
'  o Can use Excel 8.0 or Excel 5.0 to read most Excel 7.0/97
'    Workbooks, but there is no IISAM specifically for Excel 7.0.
'  o Use HDR=Yes if your Worksheet has a header row.
With CreateObject("ADOX.Catalog")
    .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" _
                      & App.Path & "\sample.xls';" _
                      & "Extended Properties='Excel 5.0;HDR=No'"
    SheetName = .Tables(0).Name
    Set RS = New ADODB.Recordset
    Set RS.ActiveConnection = .ActiveConnection
End With
'The "Table" name can be a range too, e.g. [Sheet1$A1C7]
With RS
    .Open "[" & SheetName & "]", _
          , _
          adOpenForwardOnly, _
          adLockReadOnly, _
          adCmdTable
    ListView.ListItems.Clear
    ListView.View = lvwReport
    For I = 0 To .Fields.Count - 1
        ListView.ColumnHeaders.Add , , .Fields(I).Name
    Next
    Do Until .EOF
        Set LI = ListView.ListItems.Add(, , CStr(.Fields(0).Value))
        For I = 1 To .Fields.Count - 1
            LI.SubItems(I) = CStr(.Fields(I).Value)
        Next
        .MoveNext
    Loop
    .Close
End With

我知道这些都是过时的,但需要它作为最后一个时间。子项(1)=.单元格(i,2)在这一行我得到了无效的属性错误谢谢你我试图添加一个不存在的列值。xaisoft,在读取excel时,我尝试的所有代码都将excel保存在内存中并读取它,是否可以在不将文件放入内存的情况下执行相同的操作,如果听起来很愚蠢,请留下此注释这一行“Set ExcelSheet=CreateObject(“Excel.Sheet”)”是否相关?相同的变量在使用前设置为两行。。。