最近一直在忙報表, 難得今天有空,把最近搗鼓的東西總結下。
之前也是不知道怎麼弄這個報表, 從來沒接觸過。雖然知道可以用VS原生的報表工具來做,但是,官方給出的文檔還是少的可憐,網上的很多文章大多是關於 web 做報表的,很少能找到關於使用RDLC在winform中做報表的。谷歌 + 必應+ 百度,依然能找到關於winform做報表的還是很少。
說到報表,大家肯定會想到和VS結合的比較緊密的是 水晶報表了。水晶報表做出來的東西很漂亮。接着可能就是 fastreport ,它也有十多年的報表經驗了,和VS銜接的也不錯。還有很多其他的報表工具,這裏就不枚舉了。說來說去,還是沒得微軟原生的工具好額,畢竟是自家的東西,自家的東西能和VS做到無縫連接。微軟就是強大……
我使用的是VS2010開發工具。開發語言是 C#。
————————————先看看結果
報表是這樣設計的:
看看結果:
————————————步驟(中間有些步驟可以交換)
1, 當然是新建一個winform窗體應用程序。
2, 在添加新項中,找到左邊模版中的Reporting,在右邊找到報表,報表命名隨意。
添加報表完成後,界面如下圖:
可以在報表的空白處,點擊鼠標右鍵,在彈出的菜單中選擇 視圖->標尺 ,方便我們更好的設計報表的大小。
注意:通常,RDLC報表,若將其打印到A4的紙上:
報表最大寬度爲 (上面的刻度:到16 後面的點)
報表的最大高度爲(上面的刻度:到25後面的點)
我測試出來的就是這個結果, 最大高度和最大寬度應該就在 這個值附近。
3,添加完報表後,接着就可以向報表中添加控件了。一種方式是在報表空白處, 單擊鼠標右鍵,選擇 插入,
這時就可以向其中插入控件了;另一種方式是:快捷鍵(ctrl+Alt+x)打開工具箱,也可以,在工具箱中直接拖控件到報表上。
4,帶我們添加好數據後,就可以添加數據源了。
關於添加數據源,我知道的有2中方式。
1,在報表所在的工程下創建一個類,並採用泛型的方式作爲報表數據源,這個方法我還不太熟悉,大家可以去官方文檔看看,這個是鏈接
2,新建數據集。這種方法,添加的數據集可以不和報表在同一個工程下,因爲在向報表上綁定數據的時候,只需要保證報表與數據集在同一個工程下即可,報表可以在其他工程中設計好後,在以 “添加現有項”的方法添加到報表所在的工程進行數據綁定。
這兒,我可能描述的不太清楚。沒關係,自己親自搗鼓下就明白了。繼續往下走,
接着就添加數據源,我這裏用第二種方式添加數據源,這裏,數據集的名字隨意,我還是使用默認的吧:
5,向數據集中添加數據集的格式。
當然,也可以點擊上面圖中的 “工具箱”
設計好數據集後,我們就可以向報表中添加數據了。對了。 這裏在設計數據集中的列的時候,增加新列的快捷鍵是:ctrl+L。(不分大小寫)。
6,添加報表數據。
首先,將窗口切換至 報表窗口:
接着,找到:VS的 菜單->視圖->報表數據 。打開報表數據的快捷方式是:Ctrl+Alt+D(不分大小寫)。Vs會彈出報表數據窗口:
然後,選擇 報表數據 窗口的 新建->數據集…
(這裏,其他的兩種方式,我不經常使用,參數我不太會,圖像,是添加本地的一張圖像)
在彈出的窗口中,做如下操作。
7,點解確定後,在報表數據窗口中就有了我們剛剛添加的數據源了。
接着,我們把數據源中的項拖到 報表上指定的位置即可。
報表的工作算是做完了。
————————————查看報表和向報表中添加數據源。
我這裏的做法是動態向報表中添加數據。
1, 回到winform設計窗口,打開工具箱,在 報表分類下找到 名爲 ReportViewer的控件,將其添加到winform窗體上,調整好其大小。
2,雙擊winform窗體 或者 按 F7 。進入到後臺代碼,添加下列代碼:
添加下列的名稱空間:
- using Microsoft.Reporting.WinForms;
using Microsoft.Reporting.WinForms;
再添加下列代碼
- private void Form1_Load(object sender, EventArgs e)
- {
- ///—-指定報表外部數據源
- DataTable table = new DataTable();
- table.Columns.Add(”工具”, typeof(string));
- table.Columns.Add(”語言”, typeof(string));
- table.Rows.Add(”VS2010”, “C# 4.0”);
- ///—添加數據源
- ReportDataSource rds = new ReportDataSource();
- rds.Name = ”DataSet1”;
- rds.Value = table;
- ///—向報表綁定數據源
- this.reportViewer1.LocalReport.DataSources.Add(rds);
- ///—向報表查看器指定顯示的報表
- this.reportViewer1.LocalReport.ReportPath = @“..\..\Report1.rdlc”;
- this.reportViewer1.RefreshReport();
- }
private void Form1_Load(object sender, EventArgs e)
{
///----指定報表外部數據源
DataTable table = new DataTable();
table.Columns.Add("工具", typeof(string));
table.Columns.Add("語言", typeof(string));
table.Rows.Add("VS2010", "C# 4.0");
///---添加數據源
ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSet1";
rds.Value = table;
///---向報表綁定數據源
this.reportViewer1.LocalReport.DataSources.Add(rds);
///---向報表查看器指定顯示的報表
this.reportViewer1.LocalReport.ReportPath = @"..\..\Report1.rdlc";
this.reportViewer1.RefreshReport();
}
這裏,請注意:
rds.Name = “DataSet1”; 這裏的DataSet1是來自 下圖所示的名稱。
3,運行程序(Ctrl + F5)看看: