Announcement

Collapse
No announcement yet.

VB.NET Excel einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • VB.NET Excel einlesen

    Hallo

    Ich muss eine Excel-Tabelle einlesen und davon zwei Spalte in VB weiterverarbeiten.
    Da müsste ich Zeile für Zeile einlesen.
    Leider stecke ich momentan fest.
    Momentan habe ich diesen Code:
    Code:
                Dim xlApp As Excel.Application
                xlApp = New Excel.Application
                xlApp.Visible = False
    
                xlApp.Workbooks.Open(LSXMLFile, [ReadOnly]:=True)
    
                Dim dicSource As Dictionary(Of String, String) = Nothing
    
                For x = 0 To 10
    
                    dicSource.Add(xlApp.Range("A2").Value().ToString(), xlApp.Range("B").Value().ToString())
                Next
    gibt es ein einfache Variante dafür?

    Danke für eure Hilfe!

  • #2
    Guten Tag

    Was willst Du Schlussendlich erreichen?

    Freundliche Grüsse

    exc-jdbi
    Zuletzt editiert von Exc-JDBI; 03.03.2013, 13:49. Reason: Andere Darstellung

    Comment


    • #3
      Ich muss zwei Spalten der Excel-Datei in eine Datenbank einfügen.

      Comment


      • #4
        Zugriff auf Excel und Excelrange

        Guten Tag

        Ich nehme an die Daten werden nachher in ein Dataset oder dergleichen eingespielt.

        Ich mache das immer mit einer Array.

        [highlight=vbnet]
        Option Explicit On
        Option Strict On
        Imports System.IO
        Imports Microsoft.Office.Interop

        Dim ZweiSpaltenHolen As Array = GetTwoRange(strXlsPathName, "XlsSheetName", "A", "C")

        [/HIGHLIGHT]

        [highlight=vbnet]
        Public Shared Function GetTwoRange(ByVal strDBPathName As String, _
        ByVal strSheetName As String, _
        ByVal strC1 As String, _
        ByVal strC2 As String) As Array
        Dim xlsApp As Excel.Application = New Excel.Application
        Dim xlsWb As Excel.Workbook = Nothing
        Dim xlsSh As Excel.Worksheet = Nothing
        Dim array(,) As Object = Nothing
        Dim arColumb(1) As Array
        Dim xlsRg As Excel.Range
        GetTwoRange = Nothing

        Try
        If File.Exists(strDBPathName) Then
        xlswb = xlsApp.Workbooks.Open(strDBPathName)
        xlsSh = CType(xlsWb.Sheets(strSheetName), Excel.Worksheet)
        If xlsSh IsNot Nothing Then
        If xlsSh.Name = strSheetName Then
        If IsNumeric(strC1) Then
        xlsRg = CType(xlsSh.Columns(CInt(strC1)), Excel.Range)
        Else : xlsRg = CType(xlsSh.Columns(GetColumbItem(strC1, , False)), Excel.Range)
        End If
        array = CType(xlsRg.Value(Excel.XlRangeValueDataType.xlRan geValueDefault), Object(,))
        arColumb(0) = array
        If IsNumeric(strC2) Then
        xlsRg = CType(xlsSh.Columns(CInt(strC2)), Excel.Range)
        Else : xlsRg = CType(xlsSh.Columns(GetColumbItem(strC2, , False)), Excel.Range)
        End If
        array = CType(xlsRg.Value(Excel.XlRangeValueDataType.xlRan geValueDefault), Object(,))
        arColumb(1) = array
        Return arColumb
        End If
        End If
        End If
        Catch ex As Exception
        MessageBox.Show(ex.Message)
        Finally
        xlsWb.Save()
        xlsWb.Close()
        xlsApp = Nothing
        xlsWb = Nothing
        End Try
        End Function
        Private Shared Function GetColumbItem(ByVal strCol As String, _
        Optional ByVal slevel As Integer = 0, _
        Optional ByVal bol0Basic As Boolean = True) As Long
        GetColumbItem = Nothing
        If (slevel = Len(strCol)) Then Return Nothing
        GetColumbItem = CLng(GetColumbItem(strCol, slevel + 1, False) + ((Asc(Mid(strCol, Len(strCol) - slevel, 1)) - 65) + 1) * 26 ^ slevel + CInt(IIf(bol0Basic, -1, 0)))
        End Function
        [/HIGHLIGHT]


        Ich hoffe ich konnte helfen.

        Freundliche Grüsse

        exc-jdbi

        Comment

        Working...
        X