![]() |
Excel Zugriff mit ADO
Hallo zusammen,
ich habe mir hier im Forum folgenden Code zum Zugriff auf Exceldateien mittels ADO kopiert und das funktioniert zum Teil auch ganz gut. Das Problem ist nur, das ich auf die einzelnen Zellen (im Beispiel die Anweisung: "ATable.FieldValues['A1']") einfach nicht zugreifen kann, dann kommt immer "Feld A1 nicht gefunden". Kann hier jemand weiterhelfen?
Delphi-Quellcode:
var
ACon : TADOConnection; ATable : TADOTable; AList : TStringList; AStr : String; v : Variant; begin //Connection öffnen ACon := TADOConnection.Create(Self); ACon.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Provider=Microsoft.Jet.OLEDB.4.0; ' + 'Data Source=F:\Entwickler-Projekte\HSH\Database\Testmappe.xls;' + 'Extended Properties=Excel 8.0; ' + 'Persist Security Info=False'; ACon.LoginPrompt := False; ACon.Open; AList := TStringList.Create; ACon.GetTableNames(AList); ShowMessage(AList.Text); //Table öffnen ATable := TADOTable.Create(Self); ATable.Close; ATable.Connection := ACon; AStr := Copy(AList[0], 2, Length(AList[0]) - 2); ATable.TableName := AList[0]; ATable.TableDirect := True; ATable.Open; ATable.First; ShowMessage(IntToStr(ATable.RecordCount)); //Table langlatschen while not ATable.Eof do begin v := ATable.FieldValues['A1']; if not VarIsNull(v) then //wert nicht leer mach string draus begin v := VarAsType(v, varString); ShowMessage(v); end; ATable.Next; end; FreeAndNil(ATable); FreeAndNil(AList); ACon.Close; FreeAndNil(ACon); |
Re: Excel Zugriff mit ADO
Wie sieht dein XLS File aus?
Gibt es in der Arbeitsmappe in der ersten Arbeitsbereichsseite ("Tabelle") eine Spalte mit dem Namen "A1"? Schöne Grüße, Jens :hi: |
Re: Excel Zugriff mit ADO
Einfach statt über den Namen über den Index zugreifen:
Delphi-Quellcode:
Die Feldnamen von Excel sind IMHO mit einem $-Zeichen dekoriert.
v := ATable.Fields[0].AsString; // Spalte A
Der Name "A1" bezeichnet ja übrigens eine bestimmte Zelle, während der Feldname sich ja auf eine bestimmte Spalte beziehen muss. Am Besten, du beteibst etwas Forschungsarbeit: eine Datesource + ein DBGrid auf das Formular und du siehst die richtigen Feldnamen. |
Re: Excel Zugriff mit ADO
Warum greift Du denn nich "direkt" über OLE auf Excel zu?
Dann kannste doch praktisch 1:1 VBA programmieren wenn man so will. |
Re: Excel Zugriff mit ADO
Zugriff per ADO funktioniert auch ohne Excel und ist schneller als OLE
|
Re: Excel Zugriff mit ADO
Ah ok, grade Ersteres ist natürlich ein sehr gutes Argument.
Zweiteres kommt halt auf die Liste drauf an die man auslesen/verarbeiten möchte. :) |
Re: Excel Zugriff mit ADO
Vielen Dank, der Zugriff über Fields funktioniert.
Das nächste Problem ist jetzt allerdings, das er die dritte Spalte als leer liefert??? Wenn ich die Tabelle wie empfohlen in einem Grid anzeige, sehe ich das auch. Kennt jemand dieses Problem und kann mir hier weiterhelfen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 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-2025 by Thomas Breitkreuz