AGB  ·  Datenschutz  ·  Impressum  







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

Excel Tabelle

Ein Thema von coolstranger · begonnen am 23. Aug 2003 · letzter Beitrag vom 3. Aug 2006
Antwort Antwort
coolstranger

Registriert seit: 18. Aug 2003
40 Beiträge
 
#1

Excel Tabelle

  Alt 23. Aug 2003, 11:15
Hallo leute!
Kann man eine Excel-Tabelle in einer DBGrid Komponente darstellen und auch neue Datensätze hinzufügen?
Wenn ja, WIE?????
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#2

hmm,

  Alt 23. Aug 2003, 11:24
ist Excel eine Datenbank (DB) ?
=> Nein ist es nicht
=> DB(Datnbank)Grid ist also nicht mittel der Wahl

DBGrind ist nichts weiter als ein Abbild der Datenbank die du ansprichst, da kannste auch keine Zeilen hinzufügen, du kannst sie in die DAtenbank einfügen und dadurch erscheinen sie im Grid aber du kannst dieses DBGrid ansich nicht bearbeiten. Macht auch keienn richtigen Sinn ist.

Was du suchst ist ein Stringgrid, da kannste deine Exceldaten rein bosseln. Ich mach das via OLE.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3

Re: Excel Tabelle

  Alt 23. Aug 2003, 11:27
Wenn du das via OLE machst, dann muss aber Excel auf dem PC installiert sein!
Alexander
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#4

hmm,

  Alt 23. Aug 2003, 11:29
joo.
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Excel Tabelle

  Alt 28. Jun 2004, 07:19
Hi,

Ich wollte das Thema noch einmal kurz aufgreifen. Die Datenbanken bestehen doch auch aus Tabellen. Und es gibt doch auch ODBC und ADO Treiber.
Die ADO Connection kann man mit einer Excel Tabelle verbinden. Nur wie gehts dann weiter?

ciao
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#6

Re: Excel Tabelle

  Alt 28. Jun 2004, 08:51
Klar geht das !

Wenn Du über ODBC kommst, etwa so

- die Connection mit ODBC Datenquelle verbinden
- und dann ADO-Table-Objekt einfügen
- Table mit Connection verbinden (Property Connection)
-- oder auch ADO-Query
- Tabelle auswählen (Bereichsname in Excel)

und dann, wie immer via DataSource die Steuerelemente anbinden.

Niels

P.S.
Wo kannst Du denn bei den ADO Komponenten Excel als Datenquelle einstellen. Bei mir geht das nur via ODBC.
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#7

Re: Excel Tabelle

  Alt 28. Jun 2004, 09:11
...wie wäre es mit einlesen über eine .csv datei? wäre doch viel einfacher!
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Excel Tabelle

  Alt 28. Jun 2004, 19:43
@nieurig

Als Datenquelle kann man eine Excel Tabelle angeben und als Provider ODBC.


@ibp

Ich möchte aber in der Tabelle schreiben und lesen ohne ich Excel immer zu importieren und exportieren. Und CSV ist keine Herausforderung
  Mit Zitat antworten Zitat
nieurig

Registriert seit: 26. Apr 2004
113 Beiträge
 
Delphi 6 Professional
 
#9

Re: Excel Tabelle

  Alt 29. Jun 2004, 07:18
Hi Quake,
dann leg mal los. Via ODBC klappt es auf dem oben beschriebenen Weg, mit dem einzigen Manko, dass vorher eine ODBC Datenquelle eingerichtet werden muss.

Dafür gibt es aber sicherlich auch dynamische Lösungen im Netz.

Viel Erfolg
Niels
Erspare Dir die Gedanken über ungelegte Eier !!!
  Mit Zitat antworten Zitat
Andreas_R

Registriert seit: 5. Apr 2005
Ort: Bremen
14 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Excel Tabelle

  Alt 3. Aug 2006, 23:09
Hallöle,

*altenthreadhochwühl*
Hoffe, ich bin hier auch richtig.

Dank eurer erstklassigen Hilfestellung in der DP ist es auch mir Anfänger mal gelungen, eine Excel-Arbeitsmappe (auch mit mehreren Tabellen) via ADO zu connecten und in einem DBGrid darzustellen.
So sieht das Formular aus:

http://www.northern-germany.de/dp/Bild1.png

Nun möchte ich gerne meiner Excel-Tabelle eine weitere Spalte (also Datenfeld) spendieren, und zwar mit dem SQL-Kommando ALTER TABLE. Das geht aber nicht, ich bekomme diese Fehlermeldung:

http://www.northern-germany.de/dp/Bild2.png

Das Anhängen und Editieren von Datensätzen klappt tadellos ....

http://www.northern-germany.de/dp/Bild3.png

.... jedoch das Löschen selbiger nicht. Dann kommt dieser Fehler:

http://www.northern-germany.de/dp/Bild4.png

Zu guter Letzt noch der Code der Unit:

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleServer, Excel2000, DB, DBTables, Grids, DBGrids, StdCtrls, ADODB,
  ExtCtrls, DBCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ListBox1: TListBox;
    ADODataSet1: TADODataSet;
    DBNavigator1: TDBNavigator;
    Button2: TButton;
    ADOCommand1: TADOCommand;
    Button3: TButton;
    Edit1: TEdit;
    procedure Button3Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Tabellenname: string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
     if ADOConnection1.Connected then ADOConnection1.Close;
     if OpenDialog1.Execute then
     begin
          ADOConnection1.ConnectionString :=
             'Provider=Microsoft.Jet.OLEDB.4.0;' +
             'Data Source='+ OpenDialog1.FileName +';' +
             'Extended Properties="Excel 8.0;HDR=Yes";' +
             'Persist Security Info=False';
          ADOConnection1.Open;
          if ADOConnection1.Connected then
          begin
               ADOConnection1.GetTableNames(ListBox1.Items, False);
               Tabellenname:= ListBox1.Items.Strings[0];
               ADODataSet1.CommandText:= 'SELECT * FROM [' + Tabellenname + ']';
               ADODataSet1.Open;
               for i:= 0 to ADODataSet1.FieldCount - 1 do
               begin
                    DBGrid1.Columns[i].Width:=
                      DBGrid1.Width div ADODataSet1.FieldCount;
               end;
          end;
     end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var i: integer;
begin
     if ADODataSet1.Active then ADODataSet1.Close;
     Tabellenname:= ListBox1.Items.Strings[ListBox1.ItemIndex];
     ADODataSet1.CommandText:= 'SELECT * FROM [' + Tabellenname + ']';
     ADODataSet1.Open;
     for i:= 0 to ADODataSet1.FieldCount - 1 do
     begin
          DBGrid1.Columns[i].Width:= DBGrid1.Width div ADODataSet1.FieldCount;
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     with ADODataSet1 do
     begin
          if Active and (State in [dsEdit]) then Close;
          Close;
     end;
     ListBox1.Items.Clear;
end;

procedure TForm1.FormResize(Sender: TObject);
var i: integer;
begin
     if ADODataSet1.Active then
        for i:= 0 to ADODataSet1.FieldCount - 1 do
        begin
             DBGrid1.Columns[i].Width:= DBGrid1.Width div
                                        ADODataSet1.FieldCount;
        end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
     if ADODataSet1.Active and (Edit1.Text <> '') then
     begin
          ADOCommand1.CommandText:= 'ALTER TABLE [' + Tabellenname +
                                    '] ADD ' + Edit1.Text +
                                    ' char(20)';
          ADOCommand1.Execute;
     end;
end;

end.
Ich MUSS nicht zwingend Excel als Datenbank benutzen, aber ich MÖCHTE es aus bestimmten Gründen gerne.

Andreas
Win XP Pro, Delphi 2005 Professional, Intel P4 3,2 GHz, 1 GB RAM, ATi Sapphire Radeon X800XT PE (16 Pipelines), eigenes Fahrrad.
  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 11:47 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