AGB  ·  Datenschutz  ·  Impressum  







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

TStringList in Exceltabelle ausgeben

Ein Thema von Ferox · begonnen am 30. Jun 2009 · letzter Beitrag vom 30. Jun 2009
Antwort Antwort
Ferox

Registriert seit: 14. Jan 2008
18 Beiträge
 
Delphi 7 Enterprise
 
#1

TStringList in Exceltabelle ausgeben

  Alt 30. Jun 2009, 17:27
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
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

Re: TStringList in Exceltabelle ausgeben

  Alt 30. Jun 2009, 17:36
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)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: TStringList in Exceltabelle ausgeben

  Alt 30. Jun 2009, 17:41
Hallo Ferox,

in den Untiefen meiner Sammlung hab ich das hier gefunden:
Delphi-Quellcode:
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 -----------------------------------}
Das war ein Entwurf um ASCIIdelimiteds einzulesen. sollte nicht weiter schwer fallen, das anzupassen.

gruß
K-H
  Mit Zitat antworten Zitat
Ferox

Registriert seit: 14. Jan 2008
18 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: TStringList in Exceltabelle ausgeben

  Alt 30. Jun 2009, 17:44
Vielen Danke
Werde mich mal dransetzen und probieren, was draus zu machen.

Danke nochmal
Ferox
  Mit Zitat antworten Zitat
Benutzerbild von Lumpiluk
Lumpiluk

Registriert seit: 25. Dez 2008
110 Beiträge
 
#5

Re: TStringList in Exceltabelle ausgeben

  Alt 30. Jun 2009, 17:48
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?
  Mit Zitat antworten Zitat
Ferox

Registriert seit: 14. Jan 2008
18 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: TStringList in Exceltabelle ausgeben

  Alt 30. Jun 2009, 17:56
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;
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

Re: TStringList in Exceltabelle ausgeben

  Alt 30. Jun 2009, 18:22
Zitat von Lumpiluk:
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?
Das Problem ist nicht Excel oder Calc von OpenOffice, sondern es geht um OLE Automation (ist auch schon länger her wo ich damit gearbeitet habe). Du muß dich mit dem Programm verbinden (soweit das Programm das anbietet) und kannst dann mit dem Programm kommunizieren, d.h. steuern, Werte setzen oder abfragen.

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.
  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 02: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