Excel Tabelle mit VB per OLEDB öffnen, verarbeiten und in Texdatei ausgeben

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Radinator.

    Excel Tabelle mit VB per OLEDB öffnen, verarbeiten und in Texdatei ausgeben

    Ich habe eine Form mit 3 Buttons, eines zum auswählen der .xlsx Datei, einen Button zum auswählen wo ich die Textdatei abspeichern will und einen Verarbeiten Button.
    Wenn ich den Verarbeiten Button betätige, nimmt er sich den Pfad für die Excel Datei und die der zu erzeugenden Text Datei aus einem FileOpenDialog und dem FileSaveDialog und baut sie in den ConnectionString und in den FileWriterStream ein
    Die Excel Datei öffne ich mit

    Visual Basic-Quellcode

    1. Dim pfad As String = tbSource.Text 'Speicherort der Excel Datei
    2. Dim listEntries As List(Of String)
    3. Using xlsconn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & pfad & ";Extended Properties=""Excel 12.0 Xml""")
    4. xlsconmn.Open()
    5. Dim cmd As OleDbCommand = xlsconn.CreateCommand()
    6. cmd.CommandText = "SELECT * FROM [Tabelle1$]"
    7. Dim dr As OleDbDataReader = cmd.ExecuteReader
    8. 'Aus Datei lesen, ein vbCrLf anhängen, in einer Array List abspeichern und an eine Sub übergeben, die das ganze in eine Datei mittles StreamWriter wegschreibt.
    9. Do While dr.Read()
    10. listEntries.Add(dr(0) & dr(1) & dr(2) & vbCrLf)
    11. Loop
    12. ausgabe(listEntries)
    13. End Using


    Aber wenn ich das ausführe, dann bleibt er mir immer bei xlsconn.Open() stehen, weil eine Exception ausgelöst wird. Die VB Fehler MsgBox sagt, dass "Die Daten nicht aktualisiert werden können, da das Objekt oder die Datenbank schreibgschützt ist". Aber ich hab weder die Datei offen, noch irgendwie schreibgeschützt irgendwo liegen ( bei mir auf C:\excelfile.xlsx)
    Bilder
    • fail.jpg

      47,79 kB, 555×315, 118 mal angesehen
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Radinator“ ()

    Ok hat sich erledigt, hab mich verschrieben, hab im originalen Quelltext in der Zeile 1 nicht Dim pfad as String = tbSource.Text, sondern Dim pfad as String = tbDest.Text...einfacher Denkfehler^^
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell