EEP報表解決方案-ExcelPlate |
|
t0922610976
一般會員 ![]() ![]() 發表:11 回覆:16 積分:15 註冊:2003-09-02 發送簡訊給我 |
報表解決方案-ExcelPlate 【前言】
Excel試算表的普及化,已成為企業必備的工具軟體之一,尤其親和的Wizard與豐富多元的圖表,更讓使用者愛不釋手。因此,如果能將ERP的報表改用Excel來表現,那麼一定會讓整體報表的呈現更為多元化與彈性化。最重要的是可以讓使用者自訂格式,讓資訊人員與使用者有著良好的分工模式,脫離傳統相互推諉的關係,確實帶來更多的便利與和諧。
【應用】
WordPlate比較適合使用在各式各樣的單據套表與基本資料的套表,針對統計報表的資料以使用Excel套表會比較方便。
1. Excel的格式本來就是一個個Cell所構成,所以針對連續多筆的資料(CDS)將較容易定義,所以只要在Excel的Cell上定義欄位TAG(套表標誌),即可連續往下印表, 由於頁次是由Excel來分頁的,所以在Excel中可以連續往下列出資料(但最多只能65536列)。
2. .由於Excel本來就可以設定計算公式,所以可以事先設定好公式,當ExcelPlate將CDS的Row資料套入後,會自動依公式計算其相對Cell的值, 這是套入Excel的最大好處,不必將公式設定於ERP的資料中,僅設定於Excel即可。
3. Excel擁有最專業最完整的統計圖表之工具,所以只要將ERP的統計資料套入已經設定好統計範圍內,即可印出精緻美觀的統計圖。
4. 因為同一個Excel檔案中,有多個Sheet的頁面,所以可以利用此特色將不同的CDS資料分別套入不同的Sheet頁面中,如此同一張報表即可呈現多種不同格式的統計資料。例如第一Sheet頁面為營業明細依日期排列,第二個Sheet頁面則可以依業務員去匯總累計等。
5. 同上, 同一個Sheet頁面,也可以輸出兩個以上的CDS資料表,此是因為兩個Sheet頁面必須分開印表,如果在同一個Sheet頁面,即可同時印出,另當有多個資料表時,可以左右分別排列,也可以上下排列(等上面的CDS印完,接著印下面的CDS).。
【原理】
1. 要設計EXCELPLATE之前,必須先在EXCEL中來設計表格,設計時完全以EXCEL為主,不管是字型還是格式都是依照EXCEL傳統習慣,包含計算公式或統計圖等,留下要套入資料的空格(即是TAG)。與WORDPLATE一樣,都是以$CDS(ROW,COLUMN)的格式來設定,但不同的是WORD的TAG定義中,ROW的部份如果要印多筆,必須一個個來定義, 但在ExcelPlate中, 則可以 $CDS(X,COLUMN)來自動往下展開CDS的ROW資料,不必一個一個定義.。
2. EXCEL檔案只是一個格式檔,在ExcelPlate輸出時,會依照ExcelPlate的ExcelTags的欄位定義套入一個臨時的Excel檔案,進行時是以OLE方式貼入Excel檔案中,由於ExcelPlate的ROW可以用'X'代表逐筆的CDS資料, 所以會在Excel中以"Insert"方式插入Cell中,即一筆一筆以"Insert"來貼 入,因為Excel的公式會隨著插入自動相對維護,所以不會讓公式與統計圖產生錯亂。
3. ExcelPlate元件允許多個CDS同時印表在同一個Sheet頁面上,或印在不同的Sheet頁面上,列印時會自動依照其第一個Column與最後一個Column標示成一個區域,在插入時僅Insert此區域以免影響到別的區域,也因為此, 所以一個CDS最好排在同一個ROW的CELL中,否則系統很難INSERT。
4. 在Form中貼入ExcelPlate,設定XLS檔案中各個TAG與CDS資料表真正的對應關係,如果其$CDS(ROW,COLUMN)的CDS名稱與COLUMN次序與表單內的CDS是允合的話,可以用一個「AutoMatch」即可自動對應其關係,即XLS檔內的每一個TAG格式要替換成那一個CDS的那一欄位資料, 透過ExcelPlate的元件將CDS的資料套到XLS檔案上。
【屬性說明】 屬性 說明
Active(啟動) 此屬性須設為True才能讓EXCELPLATE正常運作,主要是為了配合報表輸出到EXCEL時,是否要使用EXCEL套表的方式
Dataset(資料表) 指輸出到Excel的主檔,如果XLS內有多個CDS時,可以選一個CDS代表即可
ExcelFile(Excel格式檔案) 指要套表的XLS檔案, 一般此檔存放在"DOC"的子目錄中
ExcelTags(套表欄位定義) 1. RTFTags(欄位定義): 為一個集合,如下的欄位定義,一般是在WORDPLATE中Double Click以物件編輯器來設定之。2. DataField(欄位名稱): 每個TAG所對應的欄位名稱,自動對應時是以COLUMN的次序做為取得欄位名稱的原則。3. Pict(定位格式): 輸出時可以用此屬性來設定輸出的格式。
OutputPath(輸出路徑) 選擇要輸出的DOC路徑,來源Excel檔也是須以此路徑來讀取XLS檔案
OutPutFileName(輸出檔名) 是否要指定輸出XLS檔案的名稱,沒有定義時,會自動依日期時間來編出檔名,以防止重複
ShowAction(顯示過程) 用來設定是否顯示套表個過程,此可監看套表的所有情況與過程
AutoVersion(自動版本管理) 預設為True,當Client端沒有此XLS或比Server舊時,會自動向Server下載
Name(名稱) ExcelPlate元件名稱
DefaultFileHead(檔案命名開頭) 當自動命名時, 可以用此開頭的檔名作為命名
OutPutMode(輸出模式) 1. NONE(僅輸出到DOC檔不打開)2. LaunchExcel(輸出並打開XLS檔)3. EMail(輸出到XLS,並作為附件以E-MAIL發送),此模式可以在Report或EXCELPLATE.OUTPUT(1)時,可以讓User自行選擇
EmailAddress(EMAIL地址) 當USER選擇EMAIL當附件傳送此XLS時,可以在此設定要傳送的E-MAIL地址
EmailTitle(EMAIL主題) 當USER選擇EMAIL當附件傳送此XLS時,可以在此設定要傳送的E-MAIL主題
OUTPUT(Mode-N) 此為EXCELPLATE的一個METHOD,用來輸出CDS資料到ExcelPlate所指定的XLS檔案中,Mode-N為0代表不會出現讓USER選擇輸出到那裡的交談畫面,Mode-N為1代表會出現此交談畫面供User來選擇與操作,此最適合於FORM表單中的輸出報表,不必設計Report模組,而直接以EXCELPLATE來輸出到EXCEL中 【實例一-業績統計表】
1. 先以EXCEL製作一個格式檔 INVRPT.XLS,在SHEET1的頁面上設定抬頭為'業績統計表',分別設計下列TAG:
製表日期: $DATE() (置於表頭, 為一個運算式的TAG, 可自由定義)
統計月份: $MONTH() (置於表頭, 為一個運算式的TAG, 可自由定義)
銷貨日期: $CDS0(X,1) (以下皆置於明細,上一列的CELL自行輸入欄位抬頭)
銷貨客戶: $CDS0(X,2)
客戶名稱: $CDS0(X,3)
銷貨金額: $CDS0(X,4)
營業稅: $CDS0(X,5)
含稅金額: $CDS0(X,6)
業務員: $CDS0(X,7)
以上CDS0的欄位次序都是假設的,請依實際情況設定之。
2. 在INVRPT.XLS中, 可以在'銷貨金額'的下一列中設定總計的SUM(),如'銷貨金額'的CELL如果為'D8',則請設定為SUM(D6:D7),D6為欄位表頭,因其為字串所以包含統計對於SUM()是沒有影響的,此是為了能在D6與D7的CELL間可以INSERT多筆ROW的資料,所以必須包含D6。 同上,含稅金額的總計請設定 SUM(F6:F7)。
3. 在表單中設計一個 CDS0(TInfoClientDataSet)。
4. 在表單上貼入EXCELPLATE元件,設定Dataset(資料表)為 CDS0,並在ExcelPlate上Double Click,呼叫出物件編輯器,選擇XLS來源檔為INVRPT.XLS,此時系統會自動將所有TAG自動列出,因為TAG NAME的CDS名稱剛好與這個From的CDS名稱相同,且每個TAG的欄位次序也是正確的, 所以我們直接用「自動對應欄位」功能,自動決定其TAG所真正對應的欄位名稱,但其中有兩個TAG是系統無法辨識的,如下:$DATE():代表印出今日的日期,$MONTH():代表印出User所輸入的月份,最後按下存檔按鈕。
5. 設定ACTIVE為True,OutPutPath預設為'DOC',OutPutFileName設為'MYEXCEL.XLS',代表輸出的檔名。
6. 最後設計一個程式來啟動此ExcelPlate元件, 可以在FORM貼上一個按鈕中來啟動,程式碼如下:
ExcelPlate1.OutPut(1) 【實例二-業績統計表(含業務業績統計)】
上一個例子,只能看到當月每筆的業績與客戶,但無法統計業務員的業績統計, 所以我們特別利用SHEET 2頁面來設計業務業績統計表 如下:
1. 用原來的 INVRPT.XLS去做更改, 我們可在SHEET2的頁面上設定抬頭為'業務業績統計表', 分別設計下列TAG:
製表日期: $DATE() (置於表頭, 同SHEET 1)
統計月份: $MONTH() (置於表頭, 同SHEET 1)
業務員代號: $CDS1(X,1) (以下皆置於明細,上一列的CELL自行輸入欄位抬頭)
業務姓名: $CDS1(X,2)
當月業績: $CDS1(X,3)
2. 在畫面貼上一個TinfoClientDataSet,命名為CDS1,並填入適當的SQL語法。
3. 用原來的EXCELPLATE元件,其Dataset(資料表)一樣為CDS0,不必設定為CDS1,再於ExcelPlate上Double Click,呼叫出物件編輯器,重新選擇XLS來源檔為INVRPT.XLS,此時系統會自動再將所有TAG自動列出, 所以會多出CDS1的欄位,同樣以「自動對應欄位」功能,自動決定其TAG所真正對應的欄位名稱與資料表,最後按下存檔按鈕。
4. 其餘設定同上。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |