![]() |
Einige Tausend Daten an Excel Übergeben
Hallo,
Ich habe ein kleines Problem. Ich will ca. 3000 Datensätze in Excel reinschreiben jeweils pro Zeile ca. 5 Werte. Wenn ich nun ein Excel Workbook öffne weil ich eine Vorgabe habe dann dauert es Verdammt lang 1-2 Stunden .
Delphi-Quellcode:
Wenn ich wiederum ein Excel generiere und ein Workbook adde und dann nur das Sheet dazu anspreche ,also keine Vorhandene Datei dann ist es Verdammt Schnell.
try
begin XApp:=CreateOleObject('Excel.Application'); XApp.Visible:=true; end; except showmessage('Unable to link with MS Excel, it seems as it is not installed on this system.'); exit; end; XApp.Workbooks.Open(ExtractFilePath(ParamStr(0))+'Inventur.xls'); //Einfügen for r:=1 to 500-1 do begin // sheet.Cells[row,col]:='55'; XApp.Cells[r,1]:='Typ:'; XApp.Cells[r,2]:='Bezeichnung: '; XApp.Cells[r,3]:='Bezeichnung: '; XApp.Cells[r,4]:='Bezeichnung: '; XApp.Cells[r,5]:='Bezeichnung: '; XApp.Cells[r,6]:='Bezeichnung: '; XApp.Cells[r,7]:='Bezeichnung: '; XApp.Cells[r,8]:='Bezeichnung: '; end;
Delphi-Quellcode:
try
begin XApp:=CreateOleObject('Excel.Application'); XApp.Visible:=true; end; except showmessage('Unable to link with MS Excel, it seems as it is not installed on this system.'); exit; end; XApp.WorkBooks.Add(-4167); //open a new blank workbook XApp.WorkBooks[1].WorkSheets[1].Name:='Sheet1'; //give any name required to ExcelSheet sheet:=XApp.WorkBooks[1].WorkSheets['Sheet1']; //Einfügen for r:=1 to 200-1 do begin // sheet.Cells[row,col]:='55'; sheet.Cells[r,1]:='Typ:'; sheet.Cells[r,2]:='Bezeichnung: '; sheet.Cells[r,3]:='Bezeichnung: '; sheet.Cells[r,4]:='Bezeichnung: '; sheet.Cells[r,5]:='Bezeichnung: '; sheet.Cells[r,6]:='Bezeichnung: '; sheet.Cells[r,7]:='Bezeichnung: '; sheet.Cells[r,8]:='Bezeichnung: '; end; Weiß jemand einen Weg wie ich das mit dem Vorhandenen XLS File auch schnell hinbekomme? danke |
Re: Einige Tausend Daten an Excel Übergeben
Hallo René,
ich vermute, dass du eine ähnliche Performanz erzielst, wenn du die gleiche Art der Zellenaddressierung verwendest.
Delphi-Quellcode:
Freundliche Grüße
begin
// ... XApp.Workbooks.Open(ExtractFilePath(ParamStr(0)) + 'Inventur.xls'); sheet := XApp.WorkBooks[1].WorkSheets[1]; // oder über den Namen ... //Einfügen for r:=1 to 200-1 do begin // sheet.Cells[row, col] := '55'; sheet.Cells[r, 1] := 'Typ:'; sheet.Cells[r, 2] := 'Bezeichnung:'; sheet.Cells[r, 3] := 'Bezeichnung:'; sheet.Cells[r, 4] := 'Bezeichnung:'; sheet.Cells[r, 5] := 'Bezeichnung:'; sheet.Cells[r, 6] := 'Bezeichnung:'; sheet.Cells[r, 7] := 'Bezeichnung:'; sheet.Cells[r, 8] := 'Bezeichnung:'; end; // ... |
Re: Einige Tausend Daten an Excel Übergeben
Hi,
Danke ich habe auch nochmals rumgespielt und soeben festgestellt das es an der Vorlage liegt. Die macht iergendwie die Seiten Zahl automatisch . Wenn willst kann i Sie dir mal per PN schicken. Aber behoben hab i es noch nicht bekommen. PS: Lösung gefunden: In der Datei war unter Ansicht Seitenumbruch aktiviert das macht alles verdammt langsam. danke |
Re: Einige Tausend Daten an Excel Übergeben
Zitat:
Kann dir leider keinen Code geben da ich dieses Verfahren nur von einer Kaufkomponente kenne. Alternativ besorgst du dir Komponenten die Exceldateien (*.xls) native erzeugen können ohne Excel. |
Re: Einige Tausend Daten an Excel Übergeben
Oder, wenn es sich um eine Tabelle handelt, kannst du Excel auch über ADO ansprechen.
|
Re: Einige Tausend Daten an Excel Übergeben
Es duerfte auch schneller gehen wenn man sich nicht jedesmal von Sheet zu Cells zu Row zu Column hangelt. Einmal innerhalb der Schleife eine Hilfsvariable fuer "sheet.Cells[r]" besetzen und dann (vermutlich) Hilf.Items[1] usw. benutzen. Man darf nicht vergessen das jede .-Operation oder jeder andere Zugriff auf ein Element bedeutet das man einmal vom Client zum Server geht und zurueck. Auch sind Index-Zugriffe oft serverseitig boesartig langsam. Intern hangelt sich das Officeprogramm oft an einer verketteten Liste entlang.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 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