開篇 本篇文章主要是幫助剛開始接觸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)

.com/af647624fba343b4a80131ff6c97d4d9/clipboard.png)

.com/59807598877244a39eec390f3923af70/clipboard.png)
.com/17e875de8d964eb48227ad65918c6c4a/clipboard.png)

.com/6e5b840d1922446aa3156f6d27d8b336/clipboard.png)


.com/29edbf44189846f6b64c38e4fdf145d6/clipboard.png)

.com/d11f80571661486fba2b324276f344ca/clipboard.png)
.com/7352ac2b238b4a5ea207fa88608c4e2d/clipboard.png)


.com/95c6de75410c4f8c8d23fcaf9a3ec4e6/clipboard.png)
CrystalReport1 cr = new CrystalReport1();//實例化一個報表模板 this.crystalReportViewer1.ReportSource = cr;//為報表顯示控制項設置數據源3、運行

.com/34cd21754a9d401ab145a8a57017f0f5/clipboard.png)
我們在第一部分已經實現了每個同學成績的報表輸出,接下我們需要對每個同學進行分組統計,求每個同學的平均成績。 1、在左側的【欄位資源管理器】中右鍵【組名欄位】點擊【插入組】

.com/dad7d0e50ec4482fa4e2b9ceac146b3c/clipboard.png)

.com/98b7c85a760944c497b499d31291dc2c/clipboard.png)

.com/8d4eaa8a94834acc932722d30ec6ed7c/clipboard.png)

.com/e235bade8712425da659e275218f0965/clipboard.png)

.com/20d4e837c03d4138862bf95d5d6625b3/clipboard.png)

.com/89d08cc1987c4f23b42c6e90cd5b3a2e/clipboard.png)

.com/b7e844397c5e4e21a2eadf652cfaa53e/clipboard.png)
.com/168ec133312f4130947ce4632ec566a4/clipboard.png)

我們在第一步,第二步中都是使用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數據集來製作報表模板。

.com/f585e63fcb474b219785fa26514a183b/clipboard.png)

.com/c88a1454c6274ca4a18b95d755b20b97/clipboard.png)
.com/248cbd66460d4f448e9c18ba81ed2582/clipboard.png)


.com/3cb604be4406428caba8cbe755e0fe20/clipboard.png)
private void Form1_Load(object sender, EventArgs e) { CrystalReport2 cr = new CrystalReport2(); cr.SetDataSource(GetCustomDataTable());//數據源的綁定(DataTable類型) this.crystalReportViewer1.ReportSource = cr; }6、點擊運行,結果就是我們自己定義的數據表中的數據。

.com/4203de324e3d4b72af3af2abf0980759/clipboard.png)
希望自己寫的這個教程,對剛接觸的水晶報表的同學有一些幫助。其中可能會有一些錯誤的地方,歡迎各位指正。