開篇 本篇文章主要是幫助剛開始接觸CrystalReport報表的新手提供一個循序漸進的教程。該教程主要分為三個部分1)CrystalReport的基本使用方法;2)使用CrystalReport對數據進行分組求和;3)CrystalReport如何使用自定義的數據源(如記憶體中的DataTable表
開篇
本篇文章主要是幫助剛開始接觸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、點擊運行,結果就是我們自己定義的數據表中的數據。 總結
希望自己寫的這個教程,對剛接觸的水晶報表的同學有一些幫助。其中可能會有一些錯誤的地方,歡迎各位指正。