AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Excel Zugriff mit ADO

Ein Thema von Cogito · begonnen am 5. Aug 2008 · letzter Beitrag vom 6. Aug 2008
Antwort Antwort
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#1

Excel Zugriff mit ADO

  Alt 5. Aug 2008, 11:07
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);
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: Excel Zugriff mit ADO

  Alt 5. Aug 2008, 19:27
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
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Excel Zugriff mit ADO

  Alt 6. Aug 2008, 02:33
Einfach statt über den Namen über den Index zugreifen:

v := ATable.Fields[0].AsString; // Spalte A Die Feldnamen von Excel sind IMHO mit einem $-Zeichen dekoriert.
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.
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Excel Zugriff mit ADO

  Alt 6. Aug 2008, 07:40
Warum greift Du denn nich "direkt" über OLE auf Excel zu?
Dann kannste doch praktisch 1:1 VBA programmieren wenn man so will.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Excel Zugriff mit ADO

  Alt 6. Aug 2008, 07:42
Zugriff per ADO funktioniert auch ohne Excel und ist schneller als OLE
Markus Kinzler
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Excel Zugriff mit ADO

  Alt 6. Aug 2008, 07:49
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.
  Mit Zitat antworten Zitat
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#7

Re: Excel Zugriff mit ADO

  Alt 6. Aug 2008, 13:26
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz