2012-05-02 2 views
4

Может кто-нибудь сказать мне, как читать файл Excel в Visual Basic 6.0 и импортировать все значения в список или datagridview, хотите использовать простой и эффективный техники для достижения этого. может кто-нибудь помочь мне решить эту проблемуКак читать файл Excel (97-03) в Visual Basic 6.0

+0

я знаю, это все устаревшие, но это нужно в последний раз – karthik

ответ

7

Это следует импортировать данные из 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 
+0

l.SubItems (1) = .cells (I, 2) в этой строке я получаю ошибку недопустимого свойства – karthik

+0

Попробуйте добавить заголовки столбцов. – Xaisoft

+0

Спасибо, я попытался добавить значение в столбец, который не существует. – karthik

2

Я был бы намного более вероятно, использовать управляющую сетку своего рода, а не ListView для этого, но ...

Поскольку вы просто вводите значения без метаданных (форматирование), вы можете использовать один из IISAM в Excel для этого, и он даже работает на машинах, где 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 
Смежные вопросы