Excel einlesen klappt nicht: Format der Initialisierungszeichenfolge blablabla

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von raist10.

    Excel einlesen klappt nicht: Format der Initialisierungszeichenfolge blablabla

    Hallo zusammen,

    ich habe versucht, Daten aus einer Excel-Datei einzulesen, leider kommt immer ein Fehler:

    VB.NET-Quellcode

    1. Try
    2. Dim MyConnection As System.Data.OleDb.OleDbConnection
    3. Dim DtSet As System.Data.DataSet
    4. Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
    5. MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; " & _
    6. "data source=" & _
    7. "g:\testfile2.xls'; " & _
    8. "Extended Properties=Excel 8.0;")
    9. MyCommand = New System.Data.OleDb.OleDbDataAdapter _
    10. ("select * from [Tabelle1$]", MyConnection)
    11. MyCommand.TableMappings.Add("Table", "TestTable")
    12. DtSet = New System.Data.DataSet
    13. MyCommand.Fill(DtSet)
    14. DataGridView1.DataSource = DtSet.Tables(0)
    15. MyConnection.Close()
    16. Catch ex As Exception
    17. MsgBox(ex.ToString)
    18. End Try



    System.Argument.Exception: Das Format der Initialisierungszeichenfolge stimmt nicht mit der Spezifikation überein, die bei Index '34' beginnt.


    Als Zeile wird angegeben: "MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; " & _ "

    Mein System: Windows 7, 64 Bit. Visual Studio 2010 Express

    Hat irgendwer sowas schon mal gesehen?
    Dateien
    • testfile2.xls

      (24,06 kB, 130 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „cipherwar“ ()

    Mein Verdacht ist, dass das mit dem Treiber auf einem 64 bit Windows nicht klappt....
    Hat vielleicht jmd. mit einem Windows 7 32-Bit System mal die Zeit, die o.a. Zeilen bei sich zu testen, um zu sehen, ob da der Fehler auch auftritt?
    Hm, an beschriebener Stelle kann ich nur das Ziel-Framework einstellen... Zielarchitektur ist da nicht einstellbar.

    Das Kopieren des Connectionstrings hat keine Änderung gebracht. Klappt weiterhin nicht. Offensichtlich doch das Jet-Problem.

    Gibt es denn ausser JET noch andere Möglichkeiten?
    Sieh Dir Deinen Connectionstring an:

    VB.NET-Quellcode

    1. "g:\testfile2.xls'; " & _
    Der Apostroph nach .xls ist zuviel. :D

    VB.NET-Quellcode

    1. "g:\testfile2.xls; " & _
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    cipherwar schrieb:

    Hm, an beschriebener Stelle kann ich nur das Ziel-Framework einstellen... Zielarchitektur ist da nicht einstellbar.



    Projektmappen-Explorer > MyProject > Reiter "Kompilieren" / "Debuggen" > Rechts oben Plattform von Any auf x86 umstellen (so funzt es zumindest in VS 2008, vllt steht es bei VS 2010 woanders aber irgendwo steht es ^^).

    Gruß

    Rainer
    @cipherwar

    Ich habe nochmal gegoogelt. Die genannte x64-Einschränkung gibt es wirklich, wenn man die Erfahrungsberichte zu diesem Thema liest. Im Netz finden sich auch zahlreiche Workarounds:
    de.w3support.net/index.php?db=so&id=400684
    heise.de/developer/foren/S-Mic…-24688/msg-16565092/read/

    Interessant ist auch folgender Link:
    social.msdn.microsoft.com/Foru…a1-4ecf-b1a4-5550d80b84b6
    Gruß
    hal2000

    hal2000 schrieb:

    Ich habe nochmal gegoogelt. Die genannte x64-Einschränkung gibt es wirklich, wenn man die Erfahrungsberichte zu diesem Thema liest.


    Ja klar gibt es die. Ist ein absolut bekanntes Problem das fast alle Com-Dll's (quasi alle für die es keine spezielle 64-bit Version gibt) nicht mehr mit den 64-bit Versionen von Office zusammenarbeiten. MS einziger Lösungweg dafür ist: Installiere Sie bitte die 32-bit Version ihres Office-Produktes dann klappt es auch mit den COM-Dlls wieder. ^^

    In diesem Sinne ist es mehr als logisch das VB.NET-Anwendungen die für 64-Bit OS erstellt wurden genauso nicht mit den alten COM-Dll's harmonieren.

    Gruß

    Rainer