AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Excel: Tabelleninhalt in DBGrid anzeigen- wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Excel: Tabelleninhalt in DBGrid anzeigen- wie?

Ein Thema von Phillip Pendulina · begonnen am 10. Apr 2014 · letzter Beitrag vom 11. Apr 2014
Antwort Antwort
Seite 1 von 2  1 2      
Phillip Pendulina

Registriert seit: 13. Jun 2006
6 Beiträge
 
#1

Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 12:37
Datenbank: Excel • Version: 2010 • Zugriff über: OLEDB
Hallo,
ich hoffe, ich bin hier nicht OT- Excel ist ja eigentlich keine Datenbank.

Ich möchte ein Excel-Arbeitsblatt in einem DBGrid anzeigen,
sehe dort aber immer nur eine 'leere' Tabelle.

Ich habe eine ADOConnection, eine ADOQuery, ein ADODataset, eine ADODatasource und ein DBGrid auf dem Formular.

Mit diesem String möchte ich auf die Tabelle zugreifen:
AdoConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Provider=Microsoft.Jet.OLEDB.4.0; ' +
'Data Source=C:\Mappe1.xls;' +
'Extended Properties=Excel 8.0; ' +
'Persist Security Info=False';

ausserdem stelle ich das hier ein:
AdoConnection1.LoginPrompt := False;
AdoQuery1.Connection := AdoConnection1;
DataSource1.DataSet := AdoQuery1;
DBGrid1.DataSource := DataSource1;
DBNavigator1.DataSource := DataSource1;

Beim Öffnen der Connection kommt keine Fehlermeldung,
aber ich sehe im DBGrid nur eine leere Tabelle.

Hab ich hier einen Denkfehler? Ich bin für jeden Tip dankbar.

Grüße - Phillip

Geändert von Phillip Pendulina (10. Apr 2014 um 16:55 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 12:44
Öffnest Du das DataSet auch?
Markus Kinzler
  Mit Zitat antworten Zitat
Phillip Pendulina

Registriert seit: 13. Jun 2006
6 Beiträge
 
#3

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 16:52
Hallo Markus,
danke für Deine schnelle Antwort.

Eine Dataset- Komponente habe ich gar nicht ?
Das hier ist die komplette Prozedur:

Delphi-Quellcode:
procedure TfmHaupt.btmitExcelConnectenClick(Sender: TObject);
begin

  AdoConnection1.Connected:=False;
  AdoConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
        'Provider=Microsoft.Jet.OLEDB.4.0; ' +
        'Data Source=C:\Mappe1.xls;' +
        'Extended Properties=Excel 8.0; ' +
        'Persist Security Info=False';

   AdoConnection1.LoginPrompt := False;
   AdoQuery1.Connection := AdoConnection1;
   DataSource1.DataSet := AdoQuery1;
   DBGrid1.DataSource := DataSource1;
   DBNavigator1.DataSource := DataSource1;

  try
    AdoConnection1.Open;
  except
  ShowMessage('Fehler beim Öffnen der AdsConnection');
  raise;
  end;

  AdoQuery1.Close;
  AdoQuery1.SQL.Text:='SELECT * FROM [Tabelle1$]';
  try
  AdoQuery1.Open;
  except
  ShowMessage('Fehler beim Öffnen der AdsQuery');
  raise;
  end;

end;
Meiner Meinung nach werden die Daten von Excel über ADOConnection -> ADOQuery -> ADODatasource an das DBGrid 'durchgereicht'. Trotzdem sehe ich nur eine leere Tabelle.

Oder ist der Ansatz falsch?

Grüße - Phillip

Geändert von Phillip Pendulina (10. Apr 2014 um 17:00 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 16:59
Eine Dataset- Komponente habe ich gar nicht ?
Hier ist ja die ADOQuery (ein TDataset NAchfahre) dein Dataset, also das was mkinzler gemeint hat.
Ralph
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 17:02
Zitat:
Eine Dataset- Komponente habe ich gar nicht?
Doch, die ADOQuery-Komponente ist ein DataSet

Oder ist der Ansatz falsch?
Nein, nur es fehlt halt etwas.

Die Connection stellt nur eine Verbindung zum Exceldokument (WorkBook) her. Jetzt fehlt noch der Zugriff auf das Blatt (Sheet).

  AdoQuery1.SQL := 'Select * from [' + <Hier Namen des Tabellenblattes einfügen> + '];';
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 17:03
Wie kommst Du auf die Mappe? Die solltest Du Dir über AdoConnection1.GetTebleNames holen und dann das erste Element verwenden, anstelle Tabelle1$:

Delphi-Quellcode:
var
  TableNames : TStringlist;
begin
  TableNames := TStringList.Create;
  ...
  ADOConnection1.Active := True;
  ADOConnection1.GetTableNames(TableNames);
  ADOQuery1.SQL.Add('Select * from ['+TableNames[0]+']');
  ...
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Phillip Pendulina

Registriert seit: 13. Jun 2006
6 Beiträge
 
#7

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 17:13
@Union:
Ich hab vergessen, zu erwähnen, daß mein Datenblatt immer nur Tabelle1 heißt. Und in verschiedenen Codeschnipseln hab ich gefunden, daß dieses Datenblatt über [Tabelle1$] angesprochen wird. Andere Bezeichnungen, z.B. ohne $, führen zu Fehlermeldungen.
PS:
Hab Deinen Code eben getestet, er führt bei mir zum gleichen Ergebnis (keine Fehlermeldung, aber leere Tabelle)

@jumpy:
ja, das sehe ich auch so

@mkinzler:
Das
AdoQuery1.SQL.Text:='SELECT * FROM [Tabelle1$]'; steht ja schon in meinem Code ??

Grüße - Phillip

Geändert von Phillip Pendulina (10. Apr 2014 um 17:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 17:21
Blöde Frage: Stehen denn Feldnamen in der ersten Zeile des Arbeitsblatts? Siehst Du diese "Metadaten" dann im Grid? Und sind überhaupt Datensätze in dem Worksheet?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 17:31
Zitat:
AdoQuery1.SQL.Text:='SELECT * FROM [Tabelle1$]'; steht ja schon in meinem Code ??
Als ich den Beitrag erfasst habe noch nicht.
Markus Kinzler
  Mit Zitat antworten Zitat
Phillip Pendulina

Registriert seit: 13. Jun 2006
6 Beiträge
 
#10

AW: Excel: Tabelleninhalt in DBGrid anzeigen- wie?

  Alt 10. Apr 2014, 22:18
@Union:
Das Datenblatt enthält Werte. An Überschriften habe ich nicht gedacht, die Werte fangen gleich 'oben links' in der Zelle A1 an.
Muß ich die Tabellenköpfe dem DBGrid irgendwie mitteilen?
Ich hab alle Eigenschaften von ADOConnection, ADOQuery usw wie gepostet per Code eingestellt, nichts im Objektinspektor.
Braucht mein DBGrid evtl noch bestimmte Eigenschaften?

@mkinzler:
Ja, nach dem Posten hab ich den ersten Beitrag mehrmals editiert, z.B. den Pfad zur Excel-Datei geändert.
Ich denke aber, daß das SELECT- Statement anfangs auch dort stand. Wenn nicht, dann ist es mir versehentlich abhanden gekommen. Ich wollte Euch damit wirklich nicht verwirren, sorry.

Muß ich beim Öffnen bzw Aktivieren von ADOConnection, ADOQuery, ADODatasource usw eine bestimmte Reihenfolge beachten?

Grüße - Phillip

Geändert von Phillip Pendulina (10. Apr 2014 um 22:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:07 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