專刊內文

當前位置:首頁>專刊分享>內文

瀏覽次數 : 9527



              報表利器--ReportViewer

 

訊光科技工程師/顧琦


前言
 

   隨著『企業資訊化』的這個名詞的提出,企業自動化的變革已在我們的身邊無聲無息的發展開來。在這樣的e時代裏,企業管理機制從原先的人工化管理開始轉變為應用軟體系統化管理。報表作為一個統計資訊最直觀的呈現方式,用戶最容易變化、最可能擴展的需求,自然成為了應用軟體系統中非常重要的環節。報表,看似簡單,但是在實際開發人員的設計過程當中,往往占用了大量的精力和資源。

爲了解決報表的製作問題,提高開發的效率,在市場上也出現許多專門的報表工具。這些工具隨著需求的發展、應用開發技術也不斷發展,由C/S結構發展到支援Web報表的方式,給予開發人員帶來革命性的變革和極大的便利,『ReportViewer』便是VS中自帶的一個報表工具。

當微軟推出VS2008之際,EEP2008就此應運而生。在EEP2008中除了保留原有EEP2006中的主要功能外,同時還繼承並發展了ReportViewer功能,完整提供了EEP2008中的報表開發體系,使EEP2008也成為了報表開發者易學易用且富有彈性的開發工具。


ReportViewer概說

任何資料庫的應用系統都有一個普遍的要求,那就是報表。但是,在ASP.Net 1.x中並沒有給我們提供這個非常重要的特性。然而很幸運的,伴隨這.Net 2.0而來的Crystal ReportReportViewer元件可以滿足我們對報表的一些基本需求。ReportViewer元件是VS預設好的工具,它是一個報表瀏覽器,可用於顯示傳統()或交叉表(矩陣式)報表。ReportViewer元件既可以在Web程序中使用,也可以在Windows中被使用。首先,我們透過下面這張圖,來了解Report Viewer的基本架構。

                    

 

從上圖中可以看出,Report Viewer的Sever端結構同以往建立Server端專案(Project)一樣,我們可以透過InfoCommand來對資料庫進行連接與下達查詢語句。在Client端透過InfoDataSet(Windows端)/WebDataSet(Web端)作為資料的容器與Server端交互取得資料,並將資料交infoBindingSource(Windows端)/WebDataSource(Web端)。

之前我們已說過,Report Viewer其實是一個報表的瀏覽器,那麼它到底瀏覽的實體是什麽呢?又是如何得到瀏覽的資料?在圖中可以發現,有兩個箭頭指向Report Viewer,一個為rdlc檔案,另一個為infoBindingSource/WebDataSource。

rdlc即為我們所說的報表檔案格式,rdlc意義為Report Definition Language Client-side processing,從它的名稱上便可以凸顯出它在Client端的處理能力,rdlc最初是被用於SQL Server for XML上,用在報表中定義顯示資料結構,實際上rdlc也是一種XML檔案格式,這就意味著在程式中很容易更改它的結構與內容,此將造就了它的靈活度與可訂製性,因此被廣泛使用。而rdlc所需的資料結構則通過InfoDataSet/WebDataSet所產生的xsd(XML Schema Definition)檔案來提供,在EEP2008中可以透過這兩個元件的右鍵 ”Create XSD File”來自動產生。

 有了報表rdlc檔案後只需Report Viewer得到相應的資料源即infoBindingSource/ WebDataSource便可將資料顯示出來。當然僅僅是顯示資料的功能是不夠的,Report Viewer提供了Excel和PDF兩種檔案的輸出方式來印表或eMail傳輸等等。


實例開發
 

Report Wizard(報表精靈)是EEP2008推出之際,在VS2008中提供的新功能,在上述的概說內容中,ReportViewer需要選擇一個rdlc 的檔案作為報表的顯示來源,如果你使用傳統的ReportViewer的Design a new report 是會比較繁瑣,同時要完成整個報表的產生還需開發人員自行設定較多的檔案,包括產生xsd文件,設置ReportViewer等。因此如果你使用了EEP2008新的Report Wizard,將會為設計者帶來快速開發的便利, Wizard可以將自動從產生一個Client的專案(Project),到xsd檔案產生,再至rdlc文件產生一氣呵成。開發人員只需Step By Step設定一些基本屬性,Wizard便可自動從頭到尾產生一個可以直接執行的美觀報表,觀報表,當然有些基本的設定同樣可以透過Template的方式來預先設定,好讓報表產生時不必每次都例行去進行修改。
       
在實例開發前,我們先做好如下這些準備:使用EEP Wizard產生一個SCustomer的server端專案(Project),並將其產生的SCustomer.dll掛入EEPNetServer中。完成這些工作後,Report的簡單實例開發就可以開始了。

1.     在Tools中找到EEP Wizard,選擇Create Web Report,表示要創建一個Web的報表工程。
 



 

2.     在創建報表前,先選擇所要連接的資料庫類型、資料庫的名稱。資料庫的類型一共提供了ctNone、ctMsSql、ctOleDB、ctOracle、ctODBC和ctMySql六種選擇,資料庫名稱中選擇的是EEPNetServer中所設定的資料庫名稱,如下圖。
 


 

 

3.     接著設定用來產生ReportViewer的Web頁面程式,因此,我們需先確定WebClient所在的Web Site、與要成生於哪個Folder,最後設定要產生的aspx檔案名稱與網頁抬頭。如下:
 



 

4.     接著設定Client端所要的資料源,我們選擇之前Server端所產生的SCustomers.dll的Customers。這裡需要注意的是:如果此報表要列印Master-Details的多階資料結構時,必須在下圖的Master-Details中勾選,此因為為單檔,所以我們將不勾選。  

              
    
 

5.     接著,請按Done按鈕之後,Wizard就會產生一個Web的aspx檔案,同時也會自動Create一個XSD檔案,該XSD檔案將會與Form同名,此處的aspx檔案裡會產生一個Report Viewer。

                  

 

6.     到此,開發人員點選Done後,Wizard畫面並不會關閉,因為它在產 生完成aspx檔案之後,尚不能功成身退,往下需接著設定產生rdlc的設定項目,如下說明:
 

                    

root name:用來存放該報表所在的Folder,這裡會自動將之前產生Web網頁所在的Folder自動帶
     入。

⑵ xsd name:xsd即XML Schema Definition,用於定義資料結構,該屬性用在Report Viewer所需要使用的結構檔案名稱。

Target:該屬性用來設定rdlc格式的檔案名稱,如果想開發Master/Detail報表的話,這裡可以設定MasterDetail兩種報表檔案名稱。

⑷ Layout:指報表外觀設定,用來決定此報表的標題抬頭,報表是否有Master-Details的資料源,以及
     report它的顯示風格。在此我們提供了Label(標籤直式顯示格式)和Table(表單橫式顯示格式)等兩種
     顯示風格,當報表為Label風格時,可以設定一行有多個欄位顯示。本例中選擇Table的方式,
     reportCaption則設為『客戶資料表』。
 

7.     接著再按Next後,此時Wizard會列出你所選的資料源的欄位(從xsd中得知),及Group By的欄位(以哪些欄位作為群組的欄位),如下圖,左邊就是選擇要列印哪些欄位,右邊區域就是選擇哪些欄位需要Group By。最後按下Done代表結束Wizard。

                    

  

8.     按照上面的步驟便可產生一個命名為Customer.rdlc的報表,在下圖為報表按照之前的設定的內容顯示出效果,當然,設計人員也可以對報表事後的美化工作,此報表的顯示風格是以Table(表格多筆) 為顯示橫的。
 


 

9.     最後,我們可以透過「IE瀏覽器」的功能,來看一下設計後的效果吧,下面就是以Table顯示風格生成的報表,我們可以透過ReportViewer提供的工具欄來進行報表的上下頁的翻頁。
 


 

如果使用者希望能夠將報表印表出來或透過EMail傳輸,當然Report Viewer也提供了Excel和PDF文件的輸出格式,只需要在ReportViewer在『Select a Format』中選擇出輸出的類型,點選換『Export』,即可將此報表輸出成檔案,以下為我們選擇Excel的一個案例。
 




結語
 

    通過上面簡單的介紹,想必您已經對EEP2008中的ReportViewer有了一個初步的認識。可以發現,整個報表的設計已經元件化,開發者可以通過簡單的程式,甚至不寫程式的情況下,設計出完整的報表,這點對於經常開發報表的人員來說是個很大的福音。可以想的是,在EEP2008-ReportViewer的幫助下,開發人員可以更容易、更快速、更有效率地開發出符合企業需求的報表系統。(完)