Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Laufzeit Excelzugriff extrem langsam (https://www.delphipraxis.net/216929-laufzeit-excelzugriff-extrem-langsam.html)

kompi 27. Mär 2025 15:15

AW: Laufzeit Excelzugriff extrem langsam
 
Du überträgst Zelle für Zelle die Daten per Ole nach Excel. Das ist besonders langsam.

Besser wäre es, die Daten zunächst in eine Variantes Array zu schreiben. Dann mittels Range einen Zellbereich in Excel definieren und das Array mittels range.value auf einmal nach Excel zu übertragen.
Dies spart erheblich Zeit. Natürlich muss der Zellbereich in Excel zusammenhängend sein, was aber bei dir scheinbar der Fall ist.

Gruß Kompi

pertzschc 28. Mär 2025 10:33

AW: Laufzeit Excelzugriff extrem langsam
 
Zitat:

Zitat von kompi (Beitrag 1547550)
Besser wäre es, die Daten zunächst in eine Variantes Array zu schreiben. Dann mittels Range einen Zellbereich in Excel definieren und das Array mittels range.value auf einmal nach Excel zu übertragen.

Hättest Du einen kleinen Codeschnipsel für ersteren Punkt für mich? Danke!

jaenicke 28. Mär 2025 12:05

AW: Laufzeit Excelzugriff extrem langsam
 
Du meinst sowas?
Delphi-Quellcode:
uses
  System.Win.ComObj, System.Variants;

procedure ExportToExcel;
var
  ExcelApp, Workbook, Worksheet: Variant;
  DataArray: Variant;
  i, j, Rows, Cols: Integer;
begin
  ExcelApp := CreateOleObject('Excel.Application');
  ExcelApp.Visible := True; // oder eben False wegen der Geschwindigkeit, aber in dem Beispiel soll man das Ergebnis in Excel sehen
  Workbook := ExcelApp.Workbooks.Add;
  Worksheet := Workbook.Worksheets[1];

  // Beispieldaten
  Rows := 100;
  Cols := 5;

  DataArray := VarArrayCreate([1, Rows, 1, Cols], varVariant);
  for i := 1 to Rows do
    for j := 1 to Cols do
      DataArray[i, j] := 'Wert ' + IntToStr(i) + ',' + IntToStr(j);

  Worksheet.Range[Worksheet.Cells[1, 1], Worksheet.Cells[Rows, Cols]].Value := DataArray;

  // hier nur zur Anzeige im Besipiel
  Worksheet.Columns.AutoFit;
end;

kompi 28. Mär 2025 14:13

AW: Laufzeit Excelzugriff extrem langsam
 
Genau so wie Sebastian es vorgeschlagen hat.

Das ist erheblich schneller als Zelle für Zelle zu beschreiben.

Gruß Kompi


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.
Seite 2 von 2     12   

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