Eine Regelmäßige Anforderung: „Können wir diesen Report auch nach Excel exportieren?“ und die Antwort ist natürlich „Ja“
Das ist sogar, sehr einfach!
Wie benötigen folgende Variablen:
ShowInExcel: Boolean;
ExcelBuf: TEMPORARY Record 370;
Die boolean ShowInExcel ist sinnvoll um den Export optional einzurichten zu können und diesen nicht grundsätzlich als Excel zu exportieren. So besteht also die Wahl zwischen „Ich Drucke aus“ und „ich exportiere in Excel“. Des Weiteren benötigen wir die folgenden drei Proceduren:
LOCAL PROCEDURE CreateCaption@1();
BEGIN
ExcelBuf.NewRow;
ExcelBuf.AddColumn(.FIELDCAPTION("),FALSE,'',TRUE,FALSE,TRUE,'@');
ExcelBuf.AddColumn(.FIELDCAPTION(.FIELDCAPTION(),FALSE,'',TRUE,FALSE,TRUE,'@');
ExcelBuf.AddColumn(.FIELDCAPTION(),FALSE,'',TRUE,FALSE,TRUE,'@');
END;
PROCEDURE CreateNewDataRow@2();
BEGIN
ExcelBuf.NewRow;
ExcelBuf.AddColumn(.,FALSE,'',FALSE,FALSE,TRUE,'@'); // das @ steht für Textwerte
ExcelBuf.AddColumn(.,FALSE,'',FALSE,FALSE,TRUE,'@');
ExcelBuf.AddColumn(.,FALSE,'',FALSE,FALSE,TRUE,'@');
ExcelBuf.AddColumn(.,FALSE,'',FALSE,FALSE,TRUE,'@');
END;
PROCEDURE CreateExcelFile@3();
BEGIN
ExcelBuf.CreateBook;
ExcelBuf.CreateSheet('Unser Excel Export', '129', COMPANYNAME,USERID); // nur wenn ein Info Sheet existieren soll
ExcelBuf.GiveUserControl; // spricht fuer sich oder?
ERROR('');
END;
Diese müssen nun nurnoch an die entsprechenden Stellen implementiert werden:
- CreateCaption: Dies kann in den OnPreDataItem der Exportiert werden soll, um die Überschriften zu füllen
- CreateNewDataRow: In den passenden OnAfterGetRecord
- CreateExcelFile: ans Ende des Reports oder des DataItems (OnPostDataItem)
Bitte beachten Sie noch dass Sie dies mit der IF-Anweisung…
IF ShowInExcel THEN ...
… umschliessen damit der Export auch, wie gewünscht, Optional bleibt. Dieser Wert sollte nun noch in der Request Form veränderbar sein. Daraufhin kann der Export getestet werden.
Eigentlich ganz einfach oder?
Mit freundlichen Grüßen Matthias König