Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Daten in Excel-Zellen verschieben (https://www.delphipraxis.net/38995-daten-excel-zellen-verschieben.html)

Micha 27. Jan 2005 08:16


Daten in Excel-Zellen verschieben
 
Hallo zusammen,

ich hab eine Excel-Datei (aus einem Fremdsystem exportiert) vorliegen, die wie folgt aussieht

Delphi-Quellcode:
Kunde1    Neumarkt / OPf   01.2004  02.2004  06.2004     EUR  23,00  15,00  44,00
Kunde1    Nürnberg         01.2004  02.2004  06.2004     EUR  43,00  45,00  44,00
Kunde2    Neumarkt / OPf   01.2004  02.2004  06.2004     EUR  13,00  25,00  14,00
....

die neue Excel-Tabelle soll dann folgendermaßen aussehen
Delphi-Quellcode:
1.Spalte   Kunden    Betriebssitz   Währung     Januar Februar März April  Mai   Juni   ...
 frei       Kunde1     Neumarkt / OPf   EUR       23,00   15,00     0,00   0,00   0,00   44,00 
            Kunde1     Nürnberg         EUR       43,00   45,00    0,00    0,00   0,00   44,00
           
            Kunde2      Neumarkt / OPf   EUR       13,00    25,00    0,00   0,00   0,00    14,00     
            ...

Hab jetz schon ewig rumprobiert, aber ich kriegs einfach nicht hin.

Eine Lösung wäre auch, die Quell-Datei als txt zu speichern oder in ein StringGrid zu laden. Des hätt ich alles schon.

Ich hab ein Problem mit der Schleife, die ich dafür ja wohl auf jeden Fall benötige. Keine Ahnung wie ich das anstellen soll. Problem 1: es können unterschiedliche Monate Daten enthalten. Problem 2: nach jedem Kunden soll eine Lehrzeile sein

Ich kann auch gerne die beiden Dateien als xls hochladen

Micha 27. Jan 2005 08:21

Re: Daten in Excel-Zellen verschieben
 
Ich pack gleich nochmal meinen Code dazu, was ich bisher so rumprobiert hab

Delphi-Quellcode:
procedure TForm1.zielclick(Sender: TObject);
var
name : string;
regist : integer;
i,r,c,s,d : integer;
begin
// zieht sich Dateinamen aus edt_dateiname und speichert Namen in Variable name
 name := edt_dateiname2.Text;
// zieht sich Register-Nr aus edt_register und speichert Nummer in Variable regist
 regist := strtoint(edt_register0.text);
// Excel öffnen
 lcid := GetUserDefaultLCID;
 excel := TExcelApplication.Create(Form1);
 excel.Connect;
// Exceldatei laden
 wb := excel.Workbooks.Open(name, emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, emptyParam, emptyParam, emptyParam, emptyParam,
                        emptyParam, emptyParam, lcid);

// erstes Worksheet auswählen
 ws := wb.Sheets[regist] as _WorkSheet;
 excel.DisplayAlerts[GetUserDefaultLCID] := false; // optional


 for s:=0 to ws.Rows.count-1 do
  for d:=0 to ws.Columns.Count-1 do
   for r:=0 to Stringgrid1.RowCount -1 do
    For c:=0 to StringGrid1.ColCount-1 do

  begin
  // ws.Cells.Item[d +1, s +1].value := StringGrid1.Cells[c,r],

   if StringGrid1.cells[4,r] = '01.2004' then ShowMessage('test');
   showMessage(stringGrid1.cells[6,2]);
  end;                                          //c,r
// Speichern der aktuellen Datei
  excel.ActiveWorkbook.Save(GetUserDefaultLCID);
 excel.DisplayAlerts[GetUserDefaultLCID] := false; // optional
end;

toms 28. Jan 2005 01:44

Re: Daten in Excel-Zellen verschieben
 
HI,

Du könntest auch die Daten in eine 2. Excel Tabelle schreiben.
Dürfte nicht so schwierig sein.

Micha 28. Jan 2005 07:17

Re: Daten in Excel-Zellen verschieben
 
jep, aber ich weiß nicht, wie ich die Schleife bauen soll, dass er mir z. B. immer bei einem neuen Kunden immer ne Leerzeile macht und dass die Beträge wirklich unter dem richtigem Monat stehen


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