![]() |
TStringList in Exceltabelle ausgeben
Guten Nachmittag,
ich hab ein kleines Problem, aber ich bin mir sicher, dass ihr mir weiterhelfen könnt. Ich habe vor geraumer Zeit eine Unit hier gefunden, die StringGrids in Excel-Tabellen umwandelt. Dass alles hat auch wunderbar geklappt, bis ich angefangen habe, Einträge mit mehr als 255 Zeichen zu verwenden. Jetzt verwende ich Datensätze mit 1000+ Zeichen, die ich nicht mehr in eine StringGrid Cell einlesen kann.Alle diese Datensätze, werden in einer TStringList schön untereinander angeordnet. Was ich jetzt suche, ist eine Funktion, die die erste Zeile der TStringList nimmt und in die 1. Zelle der Exceldatei speichert. Die 2. Zeile, dann in die 2. Zelle usw... Danke im Voraus Ferox |
Re: TStringList in Exceltabelle ausgeben
Wenn man wüßte welche Unit das ist, könnte man dir besser helfen.
Aber wenn es allgemein nur um TStringList geht, dann sieht das in etwa so aus:
Delphi-Quellcode:
x := sl[0]; //der erste StringList Wert (wenn vorhanden)
y := sl[1]; //der zweite StringList Wert (wenn vorhanden) |
Re: TStringList in Exceltabelle ausgeben
Hallo Ferox,
in den Untiefen meiner Sammlung hab ich das hier gefunden:
Delphi-Quellcode:
Das war ein Entwurf um ASCIIdelimiteds einzulesen. sollte nicht weiter schwer fallen, das anzupassen.
procedure STRINGL2EXCELFILE(ll:tstringlist;excfile:shortstring;trenner,EndofRecord:char);
var i,j,pp: integer; ez : integer; excel : variant; satz : ansistring; zelle : ansistring; {!! Begrenzung kann auch ansistring sein!} begin try excel:=createoleobject('EXCEL.APPLICATION'); except showmessage('Excel kann nicht gestartet werden!'); exit; end; //excel.visible:=true; { visible nur für test-zwecke } excel.workbooks.Add; i:=0 ; ez:=0; { excel-Zeilen} repeat satz:=ll[i]; while (i<ll.count-1) and (pos(EndofRecord,satz)=0) do begin inc(i,1); satz:=satz+ll[i]; end; pp:=pos(trenner,satz); j:=0; if pp>0 then repeat zelle:=''''+copy(satz,1,pp-1); { Textinterpretation erzwingen } excel.activesheet.cells(ez+1,j+1):=zelle; {cells1..x/1..y } delete(satz,1,pp); inc(j,1); pp:=pos(trenner,satz); until (pp=0) or (length(satz)<1); if length(satz)>0 then begin if satz[length(satz)]=EndofRecord then delete(satz,length(satz),1); zelle:=satz; excel.cells(ez+1,j+1):=zelle; end; inc(i,1); inc(ez,1); until i>ll.count-1; excel.ActiveWorkbook.SaveAs(Filename:=excfile); excel.ActiveWorkbook.Close; end;{-- SRINGL2EXCELFILE -----------------------------------} gruß K-H |
Re: TStringList in Exceltabelle ausgeben
Vielen Danke :P
Werde mich mal dransetzen und probieren, was draus zu machen. Danke nochmal Ferox |
Re: TStringList in Exceltabelle ausgeben
ist jetzt zwar schon etwas her, aber ich frage trotzdem mal:
Ich habe auf meinem PC nur OpenOffice istalliert. Heißt das, dass dieser Code dann nicht funktionieren würde? |
Re: TStringList in Exceltabelle ausgeben
Mit OpenOffice würde das ganze nicht funktionieren, weil du da aktiv mit Excel arbeitest.
Du erstellst ja nicht nur eine Excel-Datei, sondern startest Excel sogar.
Delphi-Quellcode:
try
excel:=createoleobject('EXCEL.APPLICATION'); except showmessage('Excel kann nicht gestartet werden!'); exit; |
Re: TStringList in Exceltabelle ausgeben
Zitat:
Der Code oben geht nicht mit Calc, weil da EXCEL.APPLICATION steht, es sich also mit Excel verbindet. Für Calc wird die Zeile anders aussehen. Versuche das mal: CreateOleObject('com.sun.star.ServiceManager') Ansonsten sind dann auch die internen Befehle anders. Aber mit etwas Anpassung sollte es auch gehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz