Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Text File Einlesen und als Excel ausgeben (https://www.delphipraxis.net/73046-text-file-einlesen-und-als-excel-ausgeben.html)

Andidreas 11. Jul 2006 13:49

Datenbank: Excel • Zugriff über: AdoConnection (???)

Text File Einlesen und als Excel ausgeben
 
hi @ all,

folgendes problem...
ich hab eine txt datei die ich mir erst mal schön strukturieren tu...
jetzt möchte ich sie dann noch in ein excel ausgeben...

weiß jemand wie des am einfachsten geht???

im forum hab ich schon bischen gesucht... und hab eigentlich nur denn hinweis gefunden das ich dafür die adoconnection am besten nehmen sollte....

hatt jemand für des was ich suche vielleicht ein kleines bsp.???

chaosben 11. Jul 2006 14:23

Re: Text File Einlesen und als Excel ausgeben
 
Imho kann man Excel via ComServer ansprechen, was aber ein installiertes Excel voraussetzt.

Alternativ könntest du nach Komponenten (Torry) suchen, die das Excel-Format nativ verstehen.
Probier mal "ARExcelReport". Es könnte etwas sein, was dir hilft. (Ich selbst habe es aber noch nicht probiert.)

Klaus01 11. Jul 2006 15:15

Re: Text File Einlesen und als Excel ausgeben
 
.. und wenn alle Stricke reißen - den Text als csv Datei speichern.

Grüße
Klaus

Andidreas 11. Jul 2006 15:23

Re: Text File Einlesen und als Excel ausgeben
 
wie vorhin schon geschrieben hab ich im forum bereits nach beispielen gesucht wo eine verbindung zwischen delphi und excel hergestellt wurde mittels adoconnection


in diesem beispiel
hier hab ich folgenden kommentar gefunden:
Zitat:

nimm eine TADOConnection und eine TADOTable.
Damit kannst du jede Excel Arbeitsmappe öffnen
im bsp. wurde gesagt das man als provider den Microsoft.Jet.OLEDB4.0 nehmen soll...

das hab ich bei mir auch gemacht, nur kann ich damit keine .xls dateien öffnen, sondern nur .mdb dateien

hat jemand ne idee was ich falsch mache???
hier mein connection string

Delphi-Quellcode:
adoconnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=U:\Programmierung\LOG\Router_Tab\Excel\RoutTab_20060711.xls;Persist Security Info=False'
wenn ich des so mach kommt immer die meldung das ich ein falsches format verwende...

Andidreas 11. Jul 2006 15:44

Re: Text File Einlesen und als Excel ausgeben
 
:wall: eine angabe hat gefehlt Extendet Properties=Excel 8.0

sollte man vielleicht dazu sagen, dieser wert wenn man denn connection string über die ide aufbaut, das dieser wert nur auf dem letzten tabellen reiter angegeben werden kann!!!!!

Andidreas 13. Jul 2006 09:24

Re: Text File Einlesen und als Excel ausgeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
so wie oben schon beschrieben, versuch ich ja gerade ein text file in ein excel auszugeben...

die connection zum excel hab ich jetzt hinbekommen, aber ich kann leider jetzt nicht die tabellen namen meines excels feststellen, bzw. ich kanns schon, aber nicht so wie ich es möchte :mrgreen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

var
strFileFrom, strFileTo : TFileStream;
sDate,sFromDir, sToDir : String;
sSheets                : TStrings;

begin

  //Create .xls with Name = Date
  sDate   := FormatDateTime('yyyymmdd', Date);
  sFromDir := '..\Excel\Template\Template.xls';
  sToDir  := '..\Excel\' +sDate+ '.xls';

  strFileFrom := TFileStream.Create(sFromDir, fmOpenRead);

  Try
    strFileTo := TFileStream.Create(sToDir, fmCreate);
    Try
      strFileTo.CopyFrom(strFileFrom, strFileFrom.Size);
    Finally
      strFileTo.Free;
    End;
  Finally
    strFileFrom.Free;
  End;

  //AdoConnection String
  AdoConnection1.Connected := False;
  AdoConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                                     'Data Source=' + sToDir + ';' +
                                     'Extended Properties=Excel 8.0;' +
                                     'Persist Security Info=False';
  AdoConnection1.Open;

  //WorkSheets in ListBox auslesen
  {AdoConnection1.GetTableNames(ListBox1.Items);}
  AdoConnection1.GetTableNames(sSheets);

  //Work with WorkSheet
  AdoTable1.Connection := AdoConnection1;
  {AdoTable1.TableName := '[' +ListBox1.Items[0]+ ']';}
  AdoTable1.TableName := '[' +sSheets.Names[1]+ ']';
  AdoTable1.Active := True;

  ShowMessage(AdoTable1.TableName);

end;
AdoConnection1.GetTableNames verlangt als Parameter einen TStrings, hab ich ja auch angelegt, wenn ich mir jetzt aber die tabellen namen einlesen lassen will, dann bringt er folgenden fehler(siehe bild)
wenn ich mir des ganze aber in ne ListBox (befehle sind kommentiert) ausgeben lass dann gehts...

hat jemand vielleicht ne idee warums ausgerechnet net mit der TStrings Variable geht???

andreash 18. Jul 2006 14:31

Re: Text File Einlesen und als Excel ausgeben
 
Hallo Andidreas,
meines Erachtens können nur von TStrings abgeleitete Klassen wie TStringList oder Klassen, die TStrings verwenden, wie TListbox, Zeichenketten speichern. Deklariere sSheets als TStringList, dann sollte es funktionieren.

Der_Unwissende 18. Jul 2006 14:50

Re: Text File Einlesen und als Excel ausgeben
 
Zitat:

Zitat von andreash
meines Erachtens können nur von TStrings abgeleitete Klassen wie TStringList oder Klassen, die TStrings verwenden, wie TListbox, Zeichenketten speichern. Deklariere sSheets als TStringList, dann sollte es funktionieren.

Nah dran. Stimmt so nicht ganz. Die TStrings ist einfach nur abstrakt. Wenn du nur die Funktionalität brauchst (also die Schnittstelle), aber nicht festlegen möchtest ob es eine TStringList oder eine THashedStringList oder oder oder ist, dann sagst du, dass du ein TStrings Objekt verwendest. Was intern gemacht wird ist dir egal, solange die Schnittstelle stimmt.

Aber dein Problem ist, du legst nie eine Instanz an. Versuch es mal damit, kannst den Typ TStrings lassen, das ist ok!

Zitat:

Zitat von Andidreas
Delphi-Quellcode:

  sSheets := TStringList.Create;
  AdoConnection1.GetTableNames(sSheets);

Gruß Der Unwissende


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 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