Was machen bei lahmen Datenexport aus Reports in Excel
Der Export von Daten welche aus einem Report von Dynamics NAV (Version?) nach Excel ausgegeben werden sollen, kann unter Umständen langsam sein, auch wenn nur etwa ein Zehntel der Kapazität eines Excel Spread Sheets damit gefüllt wird.
Dieser Umstand kann wie folgt erklärt werden:
Im folgenden Codestück des Aufrufes der Funktion „CreateSheet“ der Tabelle 37 (Excelpuffer), wird hier das Pagesetup für das Excel Sheet vorgenommen. Die Formatierung der Zellen in, konkret der Font mit der Eigenschaft „Bold“ ist sehr Performanceaufwendig.
Tablle 370 "Excel Buffer" Funktion “CreateSheet”:
IF Comment <> '' THEN
XlWrkSht.Range(xlColID + xlRowID).AddComment := Comment;
{ /// Das Bold- Format ist sehr Zeitaufwendig!
IF Bold THEN
XlWrkSht.Range(xlColID + xlRowID).Font.Bold := Bold;
}
IF Italic THEN
XlWrkSht.Range(xlColID + xlRowID).Font.Italic := Italic;
Wenn folgende Veränderung an diesem Codestück vorgenommen werden, kann bei der Validierung der Formatierung im Seitensetup von Excel, die Performance des Exports der Daten aus dem Report nach Excel immens gesteigert werden.
Funktion CreateSheet:
Ersetzten Sie dieses Code Stück
IF Bold THEN
XlWrkSht.Range(xlColID + xlRowID).Font.Bold := Bold;
mit diesem Code Stück
IF Bold THEN BEGIN
TempBoldList.Code := xlColID + xlRowID;
IF TempBoldList.INSERT THEN;
END;
TempBoldList ist eine temp record variable der tablle 7 Standard Text.
Fügen Sie dieses Code Stück außerdem noch an das Ende der Funktion ein:
IF TempBoldList.FINDSET THEN
REPEAT
XlWrkSht.Range(TempBoldList.Code).Font.Bold := Bold;
UNTIL TempBoldList.NEXT = 0;
Im ursprünglichen Code würde so verfahren, dass während der Ausführung des Reports für jeden generierten Datensatz parallel die Zelle in Excel formatiert wurde. Im veränderten Code wird nun bei der Ausführung des Reports so verfahren, dass erst einmal ermittelt wird, welche Zellen im Excel Sheet formatiert werden müssen und im nächsten Schritt wird dann die Formatierung der formatierungsbedürftigen Zellen vorgenommen.
Peter Schimon Mosessohn
Specialist Support Engineer
EMEA Customer Support & Services - SMS&P