Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Excel 'dynamisch' machen (https://www.delphipraxis.net/164827-excel-dynamisch-machen.html)

ByTheTime 1. Dez 2011 12:11

Excel 'dynamisch' machen
 
Moin,
der Titel ist vllt. etwas unpassend, aber ich habe folgendes Problem:
Ich lese aus einer BDE Werte aus. Diese sollen nun in Excel rein, das Problem ist, das sich die BDE verändert, also manchmal habe ich dann eine Spalte mit 36 Zeilen und manchmal eben eine Spalte mit 55 Zeilen. Jetzt wüsste ich gerne ob es einen Befehl gibt, der sich die nächste, leere Spalte sucht und dort reintippt. Sonsg müsste ich ja immer wieder den Code neu Tippen. Ich stele mir das so vor:

Delphi-Quellcode:
 //So würde ich es normalerweiße machen:
 Excel.Cells[2, 4].Value := 'Testwert1';
 Excel.Cells[2, 4].Value := 'Testwert2';
 Excel.Cells[2, 4].Value := 'Testwert3';
 Excel.Cells[2, 4].Value := 'Testwert4';
 Excel.Cells[2, 4].Value := 'Testwert5';
 [...]

 //Aber ich suche sowas wie:
 Excel.Cells[2, NextFreeRow].Value := 'Testwert'; //Hoffe es ist verständlich :P

sHoXx 1. Dez 2011 12:17

AW: Excel 'dynamisch' machen
 
vielleicht in einer schleife, die die anzahl der zeilen durchgeht?

Delphi-Quellcode:
for i := 0 to RowCount do
begin
  Excel.Cells[2, i].Value := 'Testwert' + IntToStr(i);
end;
nur als kleiner denkanstoß ;)

Jumpy 1. Dez 2011 13:24

AW: Excel 'dynamisch' machen
 
Hier die VBA Version, Delphiumsetzung überlass ich dir selber.

Code:
Sub test()
  Dim w As Worksheet, r As Range, i As Long
  Set w = ActiveWorkbook.Worksheets(1)
  Set r = w.Columns(2)
  i = r.SpecialCells(xlCellTypeLastCell).Row
  w.Cells(i, 2).Value = 4
End Sub
nb:
const xlCellTypeLastCell = 11

hth Jumpy

ByTheTime 6. Dez 2011 12:40

AW: Excel 'dynamisch' machen
 
Sorry, war 'ne dumme Frage von mir, habs gelöst mit:

Delphi-Quellcode:
 while (not Table1.Eof) do
  begin
   Excel.Cells[i, 1].Value := Table1D.Value;
   Excel.Cells[i, 2].Value := Table1Z.Value;
   Excel.Cells[i, 4].Value := Table1B.Value;
   Excel.Cells[i, 5].Value := Table1W.Value;
   Excel.Cells[i, 6].Value := Table1Be.Value;
   Excel.Cells[i, 7].Value := Table1M.Value;
   Excel.Cells[i, 8].Value := Table1P.Value;
   Excel.Cells[i, 9].Value := Table1E.Value;
   Excel.Cells[i, 10].Value := Table1A.Value;
   Excel.Cells[i, 11].Value := Table1Ec.Value;
   Table1.Next;
   i := i + 1;
  end;


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