Excel Export frisst CPU Performance

2. Februar 2007 16:53

Hallo zusammen,

mir ist aufgefallen, dass wenn ich einen Bericht mit einem Excelexport laufen lasse, fast 100 % CPU Auslastung auf dem Clientrechner ist. Lasse ich den Bericht ohne Excelexport laufen, ist die Belastung nur auf dem DB Server. Wieso wird der Client so stark belastet, schließlich werden doch nur fertige Daten in den Excelsheet geschrieben?

2. Februar 2007 17:31

Nun, bei einem normalen Bericht werden i.d.R. "nur" Daten vom Server abgefragt und Client-seitig dargestellt; ggf. wird lokal noch ein wenig Logik abgearbeitet, aber die Hauptlast liegt beim Server - wie gesagt: i.d.R., muss nicht immer so sein.

Nutzt man den Excel-Export - und ich bin sicher welchen Du meinst - dann wird hier via Automation Server soz. eine Instanz von Excel gestarted - auf dem lokalen Client - und die Daten werden direkt in die Zellen etc. geschrieben. Je nach Umfang "drückt" das natürlich die Systemleistung ...

5. Februar 2007 09:56

Hallo Jörg,

danke für Deine Erklärungen. Gitbt es eine Möglichkeit Excel-Exporte performanter zu gestalten? Wir haben das Problem, dass unser Kunde gerade jetzt für den Jahresabschluss ziemlich viele Reports mit Excel-Exporten teilweise parallel laufen lässt. Da sich die User via Citrix auf einen der Terminalserver anmelden (also die Navision Clients der Citrix-Sitzungen laufen auf den Terminalservern) stehen diese dann mitunter auf Volllast. Gibt es z. B. nicht die Möglichkeit das Berichtsergebnis direkt als XLS zu speichern. Habe schon etwas von dem Umweg (Als HTML speichern und dann die Endung *.xls dranhängen) gelesen. Kann man das ggf. auch per Funktion direkt in den Report einbinden? Allerdings gehen dann wohl auch die Formatierungen flöten.

Bin für jeden Hinweis dankbar.

5. Februar 2007 10:07

Nun, man kann in NAV jeden Bericht als HTML Datei speichern via "Datei - Speichern als HTML" oder via C/AL Code mit der Methode Report.SAVEASHTML.

Was euch vielleicht helfen kann, ist das Utility "Print2Excel" von SimCrest http://www.print2excel.com/
Hab' aber leider keine Ahnung wie performant das läuft ...

5. Februar 2007 11:11

Hi Jörg,

habe mir eben mal eine Trial Version von dem Tool gezogen und ausprobiert. Zum einen ist es genauso unperformant das Ergebnis per Druckertreiber in Excel zu schreiben (Während des Druckvorgangs geht die CPU Auslastung auf dem Client-Rechner ebenfalls auf fast 100 %) und die Properties für die Formatierungen sind auch nicht wirklich ausreichend. Das Ergebnis sieht ziemlich durcheinandergewürfelt aus. Vielleicht könnte man da noch ein wenig probieren, um ein besseres Ergebnis zu bekommen, ändert allerdings nichts an der Tatsache, dass die Performance genauso beansprucht wird.

Gibts vielleicht sonst noch Ideen?

5. Februar 2007 11:11

Hallo mgerhartz,
ich bin mir nicht sicher, ob die CPU last weniger wird, zumindest geht die Verarbeitung schneller, wenn du Excel im Hintergund laufen lässt, mit:
xlApplication.Visible := TRUE;

Vieleicht hilft das ein wenig.
Gruß Mikka

@Stryk
PS: Herzlichen Glückwunsch nachträglich :-P

5. Februar 2007 11:36

Hi Mikka,

auch das habe ich eben probiert. Wie Du schon selbst vermutet hast, wird zwar die Verarbeitung schneller, jedoch ist die CPU Last die gleiche.

Das Hauptproblem, das wir habe ist, dass die Navision Clients der User alle auf den Terminalservern laufen. Wenn mehrere einen Excel-Export laufen lassen, dann ist das System komplett dicht!

5. Februar 2007 11:45

Wär es eventuell möglich diese Reports Nachts oder zu einer Zeit mit weniger Auslastung zu fahren?

Die User haben dann am nächsten Morgen z.B Ihre Daten.

Das Performanceproblem gibt es bei uns auch- aber zum Glück ahben wir nur wenige Reports die in Excel ausgegeben werden!


Mfg. André

5. Februar 2007 12:59

Hi André,

tja, das wäre die beste Lösung allerdings benötigen die User die Excel Exporte spontan und lassen sich schlecht planen. Unser Kunde wickelt als Buchungszentrum die komplette Finanzbuchhaltung für mehrere Unternehmen ab. Ich denke, dass der Bedarf an Exporten hier wesentlich größer ist, als bei normalen Handelsunternehmen.

5. Februar 2007 13:39

Ich weiss im Moment gerade nicht, wie der Befehl heißt (oder ob ich das jetzt mit einer anderen Programmiersprache verwechsle), aber ich meine es gäbe da einen Befehl ähnlich dem DoEvents von VB, dass zwischendurch mal den Prozessor für andere aufgaben zur Verfügung stellt, vielleicht würde das helfen, wenn man diesen Befehl in die Schleife des Excel-Exports einbaut....

5. Februar 2007 17:10

Hi Michael,

das hört sich interessant an. Jetzt müsste ich nur noch den Befehl kennen :wink:

5. Februar 2007 17:20

In NAV wäre das dann wohl YIELD!

5. Februar 2007 17:25

genau den meinte ich ;-)

5. Februar 2007 17:57

Super, danke. Werde ich gleich morgen ausprobieren. Bis dahin....

Gruß

Markus