開篇
本篇文章主要是幫助剛開始接觸CrystalReport報表的新手提供一個循序漸進的教程。該教程主要分為三個部分1)CrystalReport的基本使用方法;2)使用CrystalReport對數據進行分組求和;3)CrystalReport如何使用自定義的數據源(如內存中的DataTable表)三個方面來寫。相信看懂了這個教程之后,對於自己項目中的實現報表這一功能,應該就能輕松的應對了。
一 CrystalReport模板的制作及顯示
A模板的制作
1、右鍵【項目屬性】添加一個水晶報表(在vs中需要安裝CrystalReport模塊,不同vs版本下載不同的CrystalReport版本:CrystalReport下載鏈接:
http://scn.sap.com/docs/DOC-7824)
2、添加報表的設計界面如下:一個報表包括(報表頭,頁眉,詳細資料,報表尾,頁眉)5個基本部分。
3、現在我們需要給新建的報表添加一個數據源,右鍵左邊的【數據庫字段】選擇相應的數據源,進行綁定。我這里選擇的是sqlserver數據庫。
4、輸入數據庫的登錄信息,然后選擇需要綁定的數據庫表,除了綁定數據表之外,還可以綁定sql語句查詢的結果,以及存儲過程和視圖,下面給出綁定數據庫表格,和綁定sql查詢。
1)綁定數據庫表格
2)點擊連接下面的【添加命令】綁定sql語句。
5、綁定數據庫之后在報表左側的【字段管理器】中就會出現該表以及sql查詢結果的的相應表頭字段。
6、把相應的字段在報表視圖中進行布局。
到此水晶報表的模板已經做好了。
注意:頁眉中的userName,courseName,score是可以更改。
B模板的顯示
1、首先在窗體上拖一個CrystalReportView控件作為顯示報表模板。
2、在form_load事件里面寫如下代碼:
CrystalReport1 cr = new CrystalReport1();//實例化一個報表模板 this.crystalReportViewer1.ReportSource = cr;//為報表顯示控件設置數據源
3、運行
報表設計點丑,但是你可以根基自己的風格進行排版設計,如字體,大小,顏色等啦。
二 CrystalReport分組統計
我們在第一部分已經實現了每個同學成績的報表輸出,接下我們需要對每個同學進行分組統計,求每個同學的平均成績。
我們在第一部分已經實現了每個同學成績的報表輸出,接下我們需要對每個同學進行分組統計,求每個同學的平均成績。
1、在左側的【字段資源管理器】中右鍵【組名字段】點擊【插入組】
2、選擇要分組的字段,然后點擊【確定】
3、這是在報表的設計器中會自動添加一個【分組】的部分。
4、在分組頭中顯示每組的名稱,然后我們可以在組尾中進行成績平均值的統計。點擊【運行總計字段】【新建】。
5、點擊【確定】會彈出編輯運行總計字段,然后在設置avg的值。
6、點擊【確定】后,在左側的【字段資源管理器】中的【運行總計字段】會顯示【avg】。
7、接下來,就可以把這個字段拖到報表設計器上的【組尾】部分中。
8、這下分組統計的報表模板就已經做好了。下面對報表模板進行整理一下,然后進行顯示。
三 CrystalReport綁定自定義的數據源
我們在第一步,第二步中都是使用sqlserver(數據表,查詢結果等)作為數據源,都是一個二維表,然后通過二維表的表頭去布局報表模板,然后報表在顯示的時候自動連接sqlserver,根據設置獲取數據並顯示,通過這樣的方式我們的對數據的控制權就不夠。而有時候我們需要在內存中對數據進行加工處理,形成一個自己的datable表,然后再綁定到報表上進行顯示。下面我們就演示一下,如何使用內存的datatable表作為水晶報表的數據源。
1、定義一個DataTable數據表,並添加一些數據(作為自定義的數據源)。
代碼如下:
private DataTable GetCustomDataTable() { DataTable dt = new System.Data.DataTable(); dt.Columns.Add("id", typeof(string)); dt.Columns.Add("userName", typeof(string)); dt.Rows.Add("430400","tjm"); dt.Rows.Add("430401", "lw"); dt.Rows.Add("430402", "tj"); return dt; }
2、定義好數據源之后,我們就需要根據我們自定的數據源建立一個報表模板。通過前面兩步我們都知道,報表模板的設計都需要數據源的字段的,所以我們的添加一個dataset數據集來制作報表模板。
3、然后在這個數據集上定義一個虛擬的表頭就行了,這個虛擬的表頭必須和內存中定義的數據源表頭是一致的,方便我們進行報表的設計。
4、然后在報表的設計器中,添加我們建立的自定義數據源,並進行設計。
5、然后在Form_load中為報表綁定數據自定義的數據源
private void Form1_Load(object sender, EventArgs e) { CrystalReport2 cr = new CrystalReport2(); cr.SetDataSource(GetCustomDataTable());//數據源的綁定(DataTable類型) this.crystalReportViewer1.ReportSource = cr; }
6、點擊運行,結果就是我們自己定義的數據表中的數據。
總結
希望自己寫的這個教程,對剛接觸的水晶報表的同學有一些幫助。其中可能會有一些錯誤的地方,歡迎各位指正。
