![]() |
schneller Zugriff auf Excel-Zellen (>10 000 Zellen)
Hallo,
ich versuche gerade einen Excelexport zu erstellen. Meine Anwendung erzeugt Datensätze und die sollen in eine Excelvorlage geladen und unter anderem Namen abgespeichert werden... Leider stellt sich der Zugriff so wie ihn jetzt habe als seeeeehr langsam heraus, gibt es dan eine andere Möglichkeit, die effizienter ist?
Delphi-Quellcode:
Vielen Dank!
unit uExcelExport;
interface uses Variants,ExcelXP; type TExcelExport = class(TObject) private FLocaleIdentifier: Integer; { private-Deklarationen } protected { protected-Deklarationen } public { public-Deklarationen } FExcel:TExcelApplication; FExcelWB:_Workbook; FExcelWS:_Worksheet; procedure OpenVorlage(Pfad:string); procedure ExportToExcel(DateiName:string); constructor Create; published { published-Deklarationen } end; implementation uses Windows, SysUtils; { TExcelExport } constructor TExcelExport.Create; begin FExcel := TExcelApplication.Create(nil); // FExcelWB := TExcelWorkbook.Create( nil ); // FExcelWS := TExcelWorksheet.Create( nil ); // Get current user locale ID FLocaleIdentifier := GetUserDefaultLCID(); end; procedure TExcelExport.ExportToExcel(DateiName: string); var I: Integer; begin FExcelWB:=FExcel.Workbooks.Item[1]; FExcelWS:=FExcelWB.Worksheets.Get_Item(1) as _Worksheet; for I := 1 to 1000 - 1 do FExcelWS.Cells.Item[i+2,1]:='Test '+IntToStr(i) ; FExcelWB.SaveCopyAs(DateiName,FLocaleIdentifier); end; procedure TExcelExport.OpenVorlage(Pfad: string); begin FExcel.Connect; FExcel.Workbooks.Open('template.xls', False, False, EmptyParam, '', False, False, EmptyParam, EmptyParam, false, false, EmptyParam, EmptyParam, EmptyParam, false, 0); FExcel.Visible[FLocaleIdentifier]:=True; end; end. |
Re: schneller Zugriff auf Excel-Zellen (>10 000 Zellen)
ich habe es mal über die zwischenablage gemacht (mit #9/#13 usw die felder trennen) alles in einen string -> in die zwischenablage, und vom excel wieder aus der zwischenablage auslesen, das verkürzt die zeit auch extrem.
Oder du schaust dir externe Komponenten an, die direkt Excel File erzeugen können (ohne Excel) zb SMExport oder ein CSV erzeugen, und dann Excel dieses aufmachen lassen, und als XLS speichern ... |
Re: schneller Zugriff auf Excel-Zellen (>10 000 Zellen)
Man könnte auch per ADO auf Excel zugreifen oder über CSV
|
Re: schneller Zugriff auf Excel-Zellen (>10 000 Zellen)
Du mußt die das gesamte ausgefüllte Sheet als VariantArray (über Ranges) geben lassen. Das ganze OLE-Calling bremst ohne Ende.
Ich kann dir jedoch keinen Quellcode geben da ich hier die TMS-Komponenten verwende die sowas implementiert haben. |
Re: schneller Zugriff auf Excel-Zellen (>10 000 Zellen)
Ich würde die Daten sowieso gerne erst als csv in eine/oder mehrere Temporärdateien speichern,
und dann ein Import in die Vorlage machen, diese dann unter anderem Namen abspeichern. Wäre das ein "schnellerer" Weg die Daten ins Excel zu schieben, wenn ja wie importiert man in Delphi CSV-Dateien in Excel?? Danke euch! |
Re: schneller Zugriff auf Excel-Zellen (>10 000 Zellen)
Man kann das per COM-Fernsteuerung Laden
|
Re: schneller Zugriff auf Excel-Zellen (>10 000 Zellen)
Zitat:
![]() Andere Möglichkeit: Ohne OLE / ADO etc. - via "native" Zugriff. Beispiele sind in der DP / Google zu finden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 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