Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO, Excel, falsches Format (https://www.delphipraxis.net/58878-ado-excel-falsches-format.html)

TPeterT 14. Dez 2005 07:56

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:
      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;
An der Datei wird es warscheinlich nicht liegen, da ich mehrere verschiedene versucht habe.

Woran könnte das liegen?

Danke und liebe Grüsse
Peter

Jens Schumann 14. Dez 2005 08:09

Re: ADO, Excel, falsches Format
 
Hallo,
da der ConnectionString korrekt aussieht würde evt. helfen, wenn Du uns das SELECT-Statement zeigen würdest.

TPeterT 14. Dez 2005 08:13

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

Jens Schumann 14. Dez 2005 08:25

Re: ADO, Excel, falsches Format
 
Zitat:

Zitat von TPeterT
Jetzt bin ich allerdings etwas überfordert: SQL-Statement vor dem Öffnen der Connection?
Den Fehler erhalte ich nämlich schon beim "ADOConnection.Open;"

Puh - das hätte ich jetzt nicht erwartet. Hast Du Excel auf dem Rechner installiert?
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 Jet-Engine installieren.

Zitat:

Zitat von TPeterT
Die Daten aus Excel möchte ich jedenfalls in ein cxMemData lesen.
Wo gehört das SQL-Statement hin? Wie sollte das lauten?

Ein SELECT Statement für eine Exceltabellen könnte wie folgt aussehen
SQL-Code:
SELECT * FROM tablle1$
Hier wird aus einer Excelarbeitsmappe das Tabellenblatt Tabelle1 abgefragt.
Achtung: Das $ Zeichen ist in Excel nicht Bestandteil des Tabellenblattnamens muss aber für die SQL-Abfrage an den Tabellenblattnamen angehängt werden.

TPeterT 14. Dez 2005 08:39

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

Jens Schumann 14. Dez 2005 08:44

Re: ADO, Excel, falsches Format
 
Hallo,
da jetzt ratlos bin zeige ich Dir den Connectionstring den ich für Excel verwende.
Code:
sExcelConnectionString ='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"';
%S wird mit Format durch den Dateinamen der Exceldatei ersetzt.

Du hast in Deinem Connectionstring 2* Provider=Microsoft.Jet.OLEDB.4.0 stehen. Evt ist das ja ein Problem.

TPeterT 14. Dez 2005 08:49

Re: ADO, Excel, falsches Format
 
Hallo!

neee.. leider das selbe Problem!
na dann such ich mal weiter ;-)

Danke und liebe Grüsse
Peter

shmia 14. Dez 2005 11:23

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.

TPeterT 14. Dez 2005 11:36

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

shmia 14. Dez 2005 11:53

Re: ADO, Excel, falsches Format
 
Zitat:

Zitat von TPeterT
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?

Wie gehst du vor, wenn du ein Problem hast ??
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 ??

TPeterT 14. Dez 2005 12:05

Re: ADO, Excel, falsches Format
 
ja - aber: Mr.Spock hat natürlich schon versucht mit einer in Excel erzeugten Datei eine ADO-Verbindung herzustellen. Dies ist ihm auch nicht gelungen.
Mr.Spock hat sich die Sache mit den Treibern auch schon überlegt und versucht, die neueste? Jet-Engine SP8) von der Microsoft-Seite zu installieren - wurde aber mit der Meldung abgebrochen, dass lokal eine aktuellere version vorhanden ist als die, welche installiert versucht wurde..
ADO selbst funktioniert - man kann eine connetion zu einer Access-DB herstellen...

das problem tritt auch auf zwei anderen rechnern auf (beide WinXP Pro, alle SP und OfficeXP)..

liebe grüsse
Peter

HendrikM 14. Dez 2005 13:11

Re: ADO, Excel, falsches Format
 
sieh doch mal nach ob eine entsprechende Datenquelle ("\Gemeinsame Dateien\ODBC") vorhanden ist

shmia 14. Dez 2005 13:19

Re: ADO, Excel, falsches Format
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von TPeterT
ja - aber: Mr.Spock hat natürlich schon versucht mit einer in Excel erzeugten Datei eine ADO-Verbindung herzustellen. Dies ist ihm auch nicht gelungen.

Das wusste ich nicht. Es ist klar, dass du keine Überschriften oder Inhalte, die nicht zu den Nutzdaten gehören, benutzen darfst.
Die Daten in den Zellen müssen wie eine Tabelle aussehen und müssen "links oben", also Zelle A1 beginnen.

Ich verwende folgenden ConnectionString:
Code:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Exceltest.xls;Extended Properties="Excel 8.0;HDR=Yes"
mit der Exceldatei im Anhang kann ich die ADOConnection problemlos öffnen.
Um auf die Daten zuzugreifen verwende ich folgende Query:
SQL-Code:
SELECT * FROM [Tabelle1$]


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 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