建立Excel比較常用的Function有這些:
CreateBook, CreateSheet, GiveUserControl, NewRow, AddColumn
這邊以Report 6 Trial Balance為例
執行這隻Report的時候,可以看到Option Tab有Print to Excel 這個功能,也就是將Report輸出為Excel格式
在Report - OnPreReport()的Trigger
IF PrintToExcel THEN //如果Print to Excel有打勾的話,會呼叫MakeExcelInfo這個Function
MakeExcelInfo;
AddInfoColumn主要是將報表的資訊放到Information Sheet,這邊可以看個人習慣,有些人喜歡將報表資訊跟資料放在同一頁,那就不需要用到AddInfoColumn
MakeExcelInfo Function在最尾巴的地方有呼叫到MakeExcelDataHeader Function
在這邊可以看到這個Function使用到AddColumn來加入表頭的欄位
結果如下:
以上圖第一個欄位為例
AddColumn("G/L Account".FIELDCAPTION("No."),FALSE,'',TRUE,FALSE,TRUE,'');
需要傳幾個參數給AddColumn這個Function,依序是
(欄位的Value, 是否為公式, 加入註解文字(滑鼠移到欄位上會顯示註解文字), 是否為粗體, 是否為斜體, 是否有底線, 儲存格的數值格式代碼)
加入註解文字這邊特別介紹一下,如果在第三個參數輸入test
AddColumn("G/L Account".FIELDCAPTION("No."),FALSE,'test',TRUE,FALSE,TRUE,'');
今天當我滑鼠移到欄位上會顯示註解文字,也就是我輸入的test
儲存格的數值格式代碼的話,主要是用在當你希望儲存格依照你的Data Type來顯示的話,可以修改儲存格格式,例如Customer No.為001,但是儲存格的數值格式代碼為空的話,輸出到Excel會顯示1而不是001
可以在AddColumn("G/L Account".FIELDCAPTION("No."),FALSE,'',TRUE,FALSE,TRUE,'@');使用@符號來更改儲存格的格式
Header表頭已經介紹完畢,那麼Body的部分跟Header差不多,只要將欄位使用AddColumn來加入欄位即可
要注意的是,因為Header的Function沒有使用到換行的Function,若是要換行的話,可以使用NewRow,透過NewRow來達到換行的動作
然後將Body的Function放在Body - OnPostSection()的Trigger裡面
最後在Report - OnPostReport()加入
IF PrintToExcel THEN
CreateExcelbook; //呼叫CreateExcelbook Function
這個Function主要是將擺放在Excel Buffer資料表內的資料輸出到Excel檔
CreateBook建立Excel
CreateSheet建立工作表
GiveUserControl主要是讓系統產生Progress Bar,直到進度條結束為止,才顯示Excel檔
這邊有個地方需要注意,就是在你的Report要將ExcelBuf變數設成Temporary暫存表,這樣才可以在多台電腦上面執行Create Excel的動作,如果沒有設定的話,會Lock Excel Buffer Tabl這張表,導致當你在Create Excel的時候,其他使用者無法Create Excel
先介紹到這邊,下次來介紹如何使用Excel的Automation來建立圖表
0 意見 :
張貼留言