AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Einige Tausend Daten an Excel Übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Einige Tausend Daten an Excel Übergeben

Ein Thema von renekr · begonnen am 11. Mai 2007 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#1

Einige Tausend Daten an Excel Übergeben

  Alt 11. Mai 2007, 05:58
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:
     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;
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.

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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Einige Tausend Daten an Excel Übergeben

  Alt 11. Mai 2007, 06:42
Hallo René,

ich vermute, dass du eine ähnliche Performanz erzielst, wenn du die gleiche Art der Zellenaddressierung verwendest.

Delphi-Quellcode:
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;
  // ...
Freundliche Grüße
  Mit Zitat antworten Zitat
renekr

Registriert seit: 27. Feb 2005
Ort: Karlsbad
534 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Einige Tausend Daten an Excel Übergeben

  Alt 11. Mai 2007, 07:03
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Einige Tausend Daten an Excel Übergeben

  Alt 11. Mai 2007, 08:51
Zitat von renekr:
Wenn ich nun ein Excel Workbook öffne weil ich eine Vorgabe habe dann dauert es Verdammt lang 1-2 Stunden.
Das Problem ist das du jeden Werte eines per COM/OLE überträgst. Du mußt das als VarArray in Delphi anlegen und dann als Range an Excel übergeben.
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Einige Tausend Daten an Excel Übergeben

  Alt 11. Mai 2007, 14:21
Oder, wenn es sich um eine Tabelle handelt, kannst du Excel auch über ADO ansprechen.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Einige Tausend Daten an Excel Übergeben

  Alt 11. Mai 2007, 14:32
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 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