![]() |
Datenbank: Excel • Version: XP • Zugriff über: ADO
ADO, Excel, falsches Format
Hallo!
Versuche mittels ADO auf eine Excel-Datei zuzugreifen. Habe bereits in mehreren Beiträgen gelesen, dass dies auch funktionieren soll. Allerdings erhalte ich immer die Fehlermeldung: "Exception der Klasse EOleException: Die externe Tabelle hat nicht das erwartete Format..." Mein Code (Datei ist der Pfad + Dateiname des Excelfiles):
Delphi-Quellcode:
An der Datei wird es warscheinlich nicht liegen, da ich mehrere verschiedene versucht habe.
ADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Provider=Microsoft.Jet.OLEDB.4.0; ' + 'Data Source=' + Datei + ';' + 'Extended Properties=Excel 8.0; ' + 'Persist Security Info=False'; ADOConnection.Open; Woran könnte das liegen? Danke und liebe Grüsse Peter |
Re: ADO, Excel, falsches Format
Hallo,
da der ConnectionString korrekt aussieht würde evt. helfen, wenn Du uns das SELECT-Statement zeigen würdest. |
Re: ADO, Excel, falsches Format
Hallo Jens!
Danke für die schnelle Antwort! Jetzt bin ich allerdings etwas überfordert: SQL-Statement vor dem Öffnen der Connection? Den Fehler erhalte ich nämlich schon beim "ADOConnection.Open;" Die Daten aus Excel möchte ich jedenfalls in ein cxMemData lesen. Wo gehört das SQL-Statement hin? Wie sollte das lauten? Danke und liebe Grüsse Peter |
Re: ADO, Excel, falsches Format
Zitat:
Hast Du Access auf dem Rechner? Das frage ich, weil mit Access die auf jeden Fall die Jet-Engine mit installiert wird. Wenn nicht, musst Du evt die ![]() Zitat:
SQL-Code:
Hier wird aus einer Excelarbeitsmappe das Tabellenblatt Tabelle1 abgefragt.
SELECT * FROM tablle1$
Achtung: Das $ Zeichen ist in Excel nicht Bestandteil des Tabellenblattnamens muss aber für die SQL-Abfrage an den Tabellenblattnamen angehängt werden. |
Re: ADO, Excel, falsches Format
Hallo Jens!
Ja - Excel und Access ist installiert, die Jet-Engine dadurch eigentlich auch... Eine Verbindung zu einer Access-Datei mittels ADO ist ohne Probleme möglich. Hmm.. Das Select-Statement benötige ich ja trotzdem erst, wenn ich mal die Verbindung aufgebaut habe. Zum Aufbauen der Verbindung ist es ja noch nicht nötig (oder sehe ich das falsch?)! Wenn ich bei der ADO-Connection versuche "manuell" den ConnectionString anzulegen - Microsoft Jet 4.0 OLE DB Provider wähle und bei Verbindung dann "..." wähle gibt er mir als mögliche Dateiendungen ausschliesslich *.mdb vor - dh ich muss "alle Dateien anzeigen, um auch excel auswählen zu können - bei Verbindung testen kommt dann natürlich wieder die oa Fehlermeldung (Nicht erkennbares Dateiformat...)... kann hier irgendwo der Fehler liegen? Danke und liebe Grüsse Peter |
Re: ADO, Excel, falsches Format
Hallo,
da jetzt ratlos bin zeige ich Dir den Connectionstring den ich für Excel verwende.
Code:
%S wird mit Format durch den Dateinamen der Exceldatei ersetzt.
sExcelConnectionString ='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"';
Du hast in Deinem Connectionstring 2* Provider=Microsoft.Jet.OLEDB.4.0 stehen. Evt ist das ja ein Problem. |
Re: ADO, Excel, falsches Format
Hallo!
neee.. leider das selbe Problem! na dann such ich mal weiter ;-) Danke und liebe Grüsse Peter |
Re: ADO, Excel, falsches Format
Du kannst nicht einfach irgendeine Excel-Datei nehmen und erwarten, dass sich die Daten mit ADO auslesen lassen.
Du musst dir zuerst eine Testdatei herstellen: neue Excel-Datei mit 3 Spalten und 10 Zeilen; die beiden unbenützten Worksheets löschen. |
Re: ADO, Excel, falsches Format
ich kann die excelfiles nicht manuell bearbeiten vor dem import in "delphi".. die excelfiles werden automatisch generiert...
weiss jetzt aber auch nicht genau was das mit dem problem zu tun hat, dass ich keine connection herstellen kann.. wie meinst du das? liebe grüsse peter |
Re: ADO, Excel, falsches Format
Zitat:
Doch wohl hoffentlich so wie Mr. Spock von der Enterprise: logisch und Schritt für Schritt. Symtom: Du kannst eine bestimmte Excel-Datei "X" nicht mit ADO öffnen. Mr. Spock würde nun mit Excel eine Testdatei erstellen und prüfen, ob er mit ADO draufkommt. Falls ja: die Excel-Datei "X" ist defekt oder nicht kompatibel Falls nein: ADO oder die Treiber sind defekt oder Mr. Spock hat einen Fehler im Connectionstring Wenn Mr. Spock wüsste, das die Excel-Datei nicht direkt von der Excel-Anwendung erzeugt werden, sondern "automatisch generiert" werden, was würde er dann messerscharf schliesen ?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz