| Autor |
Beitrag |
arnydaniel
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 10:31
Hi,
ich weiss nicht genau, ob ich hier das richtige Forum erwischt habe.
Kann ich mit Delphi eine Excel-Datei auslesen, schreiben und erstellen?
Es soll so eine Art Datenbankersatz sein.
Wenn ja, wie geht das? Kennt ihr dazu ein Tutorial?
Danke
Gruß
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 10:50
Ich hab mich nochmal informiert (ich weiss, das hätte ich vorher machen sollen) und hab herausgefunden, dass es wohl in Delphi7 eine Komponente gibt, mit der das geht. Welche genau das ist hab ich allerdings nicht verstanden.
(Es sollte außerdem funktionieren, wenn auf dem Rechner keine Excel installiert ist!)
Gruß
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
Stefan.Buchholtz
      
Beiträge: 612
WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
|
Verfasst: Mo 06.06.05 11:38
arnydaniel hat folgendes geschrieben: | Ich hab mich nochmal informiert (ich weiss, das hätte ich vorher machen sollen) und hab herausgefunden, dass es wohl in Delphi7 eine Komponente gibt, mit der das geht. Welche genau das ist hab ich allerdings nicht verstanden.
(Es sollte außerdem funktionieren, wenn auf dem Rechner keine Excel installiert ist!)
Gruß |
Dann scheidet die Delphi-Komponente aus. Die basiert nämlich auf den COM-Komponenten von Office, die es auf dem System nicht gibt, wenn Office nicht installiert ist.
Stefan
|
|
Stefan.Buchholtz
      
Beiträge: 612
WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
|
Verfasst: Mo 06.06.05 11:42
Wenn du Excel als so eine Art Datenbank verwenden willst, kommst du wahrscheinlich mit dem Excel-ODBC-Treiber am weitesten. Das setzt meines Wissens aber auch ein installiertes Excel voraus.
Schnell wird das allerdings wohl nicht sein - Excel ist nun mal keine Datenbank.
Stefan
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 11:43
Vorrausgesetzt der Benutzer hat nur Word installiert, würden diese Komponenten dann funktionieren?
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
Stefan.Buchholtz
      
Beiträge: 612
WIN 2000, WIN XP, Mac OS X
D7 Enterprise, XCode, Eclipse, Ruby On Rails
|
Verfasst: Mo 06.06.05 11:59
arnydaniel hat folgendes geschrieben: | | Vorrausgesetzt der Benutzer hat nur Word installiert, würden diese Komponenten dann funktionieren? |
Das weiss ich nicht. Ich nehme an, nein - musst du wohl ausprobieren.
Stefan
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 06.06.05 12:40
Geh mal zu [url] www.torry.net[/url] und suche nach Excel-Komponenten. Irgendwo ist da eine (oder Du checkst andere Delphi-Sites, wie die delphi superpages). Ich habe hier irgendwo eine, die benötigt kein Excel, sondern liest die XLS-Dateien direkt. Da die Doku von MS diesbezüglich jedoch (absichtlich?) fehlerhaft und unvollständig ist, kommt es immer auf den Versuch an.
Dann gibt es kommerzielle Komponenten (100 Steine): XLSReadWriteII. Das ist imho die Beste.
Dann check doch mal ADO. Nimm eine ADOConnection (oder ADOTable...) und klick auf die ConnectionString Property. Dann böpselt ADO einen Dialog und eventuell ist da eine EXCEL-Verbindung drin. Damit kannst Du auf Excel-Daten (als Tabelle) zugreifen.
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 13:08
Leider hab ich keine Excel-Komponenten auf Torry.net gefunden.
@ alzaimar: Könntest du mal nachschauen, ob du diese Komponente nochmal findest?
Alternativplan:
Kann ich anstatt einer Excel-Tabelle irgendwie eine andere Dateiart verwenden, die von keiner Software abhängig ist?
Ich hab da z.B. an eine ganz einfache Textdatei gedacht. Ist das möglich und sinnvoll?
Oder habt ihr bessere Ideen?
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 06.06.05 13:17
Also, wen ich zu torry gehe, finde ich 42 Antworten (42? wie kann das sein? Ist etwa das die FRAGE nach dem LEBEN, dem UNIVERSUM und dem ganzen REST?)
Aber der Alternativplan hört sich sehr gut an. Viel viel besser als dieses Excel.
Muss es denn ein TDataset sein?
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 13:22
alzaimar hat folgendes geschrieben: |
Aber der Alternativplan hört sich sehr gut an. Viel viel besser als dieses Excel.
Muss es denn ein TDataset sein? |
Was ist ein TDataset?
Weiss jemand, wo ich nachlesen kann, wie man Datei öfntet und einliest?
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 06.06.05 13:25
Moin!
Nimm noch einfach CSV-Dateien, die kannst du sogar mit .CommaText der StringList parsen.
cu
Narses
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 06.06.05 13:27
Was ein TDataset ist? Das, was in der Delphi-Hilfe darüber steht.
Dann versuche Folgendes (z.B.):
Plaziere eine TMemo-Komponente auf deiner Form. Und einen Button.
Doppelklick auf Button:
Delphi-Quelltext 1: 2: 3: 4:
| Procedure TForm1.Button1Click (Sender : TObject); Begin memo1.lines.LoadFromFile ('C:\Datei.TXT'); End; |
Und schon ist die Datei gelesen worden.
Vertausche LoadFromFile mit SaveToFile und -zack- kannst Du speichern. Was Du sonst mit den Daten machst, ist dir überlassen.
Wenn Du kein (sichtbares) Memo-Feld haben willst, dann benutze TStringList.
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 19:26
So noch eine letzte Frage:
Wie kann ich z.B. die 13. Zeile auslesen und ersetzten?
(Wahrscheinlich muss ich zunächst alle Zeilen in eine Array packen, oder?
Da fällt mir noch ein: wie bekomme ich die Zeilen in eine TStringList?)
Gruß
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 06.06.05 19:34
Die 13. Zeile bekommst Du über memo1.lines[12], weil die Zählung mit 0 beginnt.
Die zweite Frage erübrigt sich, wenn Du weisst, das memo.lines eine TStringlist ist (na, nicht ganz).
Na, denn man los. Bei Fragen immer fragen.
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 20:01
Frage leider etwas falsch verstanden!
Die Frage war unabhängig von dem horherigen Verlauf zu sehn. also z.B. Die Caption eines Button soll dass sein, was in der 13. Zeile steht
Danke
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 20:11
Gleich noch ne Frage hinterher:
wie bekomm ich die Zeilen in einen TStringList?
Wies beim Memo-Teil geht steht ja schon oben. Aber wie müsste diese Zeile dann heissen, wenn es nivht ein Memo, sondern ein TsringList ist?
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 06.06.05 20:25
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Var s : TStringlist;
Begin s := TStringlist.Create; Try s.LoadFromFile('foo.txt'); button1.caption := s[12]; finally s.free; end end; |
Moderiert von raziel: Delphi-Tags hinzugefügt.
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 20:40
Fragen über Fragen.
Der Code hat noch en Frage aufgeworfen:
Wozu ist das try..finally..end nötig?
Der Rest funktioniert übrigens wie ich mir das vorstellte!
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
arnydaniel 
      
Beiträge: 80
hoffentlich bald Linux
Delphi 6
|
Verfasst: Mo 06.06.05 20:47
ein aller letzte Frage(für heute):
Wie kann ich da am besten eine OpenDialog einfügen?
_________________ Wenn jeder nur an sich denkt, wird an jeden gedacht.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 06.06.05 21:14
Try..Finally dient dazu, sicherzustellen, das die Instanz 's' der Klasse 'TStringlist' garantiert wieder freigegeben wird. Delphi-Hilfe sollte schon mal angeworfen werden, das beantwortet auch deine 2.Frage (OpenDialog)
|
|