Visual Studio 水晶報表Crystal Reports
2018年01月14日 10:43:31 junxingtx 閱讀數:992更多
下載外掛地址:https://wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads
外掛部落格地址
https://blog.csdn.net/xzg58753795/article/details/81943416
環境:Visual Studio 2015, C#;
部落格轉載地址:https://blog.csdn.net/zshuaihua/article/details/25786077
本文主要包含以下內容:
一、ReportViewer使用小例子的完整步驟(新建-設計-編碼-除錯-結果);
二、ReportViewer使用過程常見問題及關鍵注意點(僅為本人個人觀點);
三、參考資料;
四、心得體會;
===================================================================================================================================
一、ReportViewer使用小例子的演示。
1、新建專案。
新建一個Windows視窗程式專案,命名為“Demo";
2、加入ReportViewer控制元件。
(1)在默認出現的Form1.cs[設計]檢視中手動調節下Form1窗體的大小,左側工具箱-->報表-->雙擊其中的”ReportViewer";
(圖 1)
(2)切換至設計視窗,選擇ReportVierwer控制元件右上角黑色小三角,顯示“ReportViewer任務”,選擇”在父容器中停靠“;
(圖 2)
3、新增資料集。
(1)在”解決方案資源管理器“的本專案”Demo“上右鍵,-->新增-->
(圖 3)
(2)在自動顯示的testDataSet.xsd視窗空白處右鍵,-->新增-->資料表。
(圖 4)
(3)點選表頭為其改名為”testDataTable",並在下一行的空白處右鍵,-->新增-->列。按快捷鍵“Ctrl + L”,共建四個列,並將列名自定義修改。(及時儲存)
(圖 5)
4、新增報表。
(1)同新增資料集相似。在專案名稱上右鍵,-->新增-->新建項...。”已安裝模板“中選擇”Reporting“,相應右側選擇”報表“,在下面名稱中改為”testReport.rdlc“。
(圖 6)
(2)在新檢視的主體部分(黑色方框內部為主體部分,外部為報表部分)空白處右鍵,-->插入-->表。
(圖 7)
(3)會自動彈出”資料集屬性“對話方塊,將”名稱“改為”DataSetName"(這個名稱很重要,後面程式碼中要用到,故要記清),“資料來源”選擇剛新建的“testDataSet",”可用資料集“會自動選擇”testDataTable“,"確定”。
(圖 8)
(4)在testReport.rdlc[設計]檢視下,剛建的“表”只有三列,在任一單元格上右鍵,-->插入列-->靠右。在第一行的”表頭“輸入這三列的表頭,在第二行的”資料“行,滑鼠移動每個單元格上,點選單元格右上角的圖示,選擇相應的列。
(圖 9)
5、繫結報表。
返回”Form1.cs[設計]"檢視,如圖 2類似,這次點選“選擇報表”右側的下拉條,選擇我們新建的報表“demo.testReport.rdlc",全部儲存。
(圖 10)
6、新增程式碼。
檢視”Form1.cs“的程式碼,在Form1_Load()方法中新增程式碼。程式碼如下(以下只是Form1_Load()方法的程式碼,不是全部,新增時需要在using下多加一行)。
[csharp] view plain copy
- <span style="font-size:14px;"> using Microsoft.Reporting.WinForms;</span>
[csharp] view plain copy
- <span style="font-size:14px;"> private void Form1_Load(object sender, EventArgs e)
- {
- loadReport();
- this.reportViewer1.RefreshReport();
- }
- public void loadReport()
- {
- DataTable dt = new DataTable();
- //定義本地資料表的列,名稱應跟之前所建的testDataTable表中列相同。
- dt.Columns.Add("Column1", typeof(string));
- dt.Columns.Add("Column2", typeof(string));
- dt.Columns.Add("Column3", typeof(string));
- dt.Columns.Add("Column4", typeof(string));
- //動態生成一些測試用資料
- for (int i = 0; i < 50; i++)
- {
- DataRow row = dt.NewRow();
- row[0] = "Test01-" + i.ToString();
- row[1] = "Test02-" + i.ToString();
- row[2] = "Test03-" + i.ToString();
- row[3] = "Test04-" + i.ToString();
- dt.Rows.Add(row);
- }
- //設定本地報表,使程式與之前所建的testReport.rdlc報表檔案進行繫結。
- this.reportViewer1.LocalReport.ReportPath = "testReport.rdlc";
- this.reportViewer1.LocalReport.DataSources.Clear();
- this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSetName",dt));
- }</span>
7、執行效果。
===================================================================================================================================
二、需要注意的幾個地方。
1、程式碼中new ReportDataSource("DataSetName",dt)),這裡的DataSetName是上面”一、4、(3)“裡那個名字,而不是所建的資料集檔案”testDataSet.xsd"的名字。我之前因為把這裡弄錯,花了好長時間才修正。
2、按上述步驟弄完後,也許還不好出來想要的結果。可能會彈出“本地報表處理期間出錯”等錯誤提示。
解決方法:將“testReport.rdlc"檔案複製一份放到提示的指定Debug目錄下。
上述方法固然可以,但每次都要手動將檔案進行復制,顯然不合適。這時其實只需要在”解決方案資源管理器“中點選報表檔案”testReport.rdlc",在下方的屬性一欄中,從“複製到輸出目錄”後面的下拉選單中選擇“始終複製”。這樣,便不用手動往Debug目錄複製檔案了。(也有網友將屬性中的“生成操作”一項的“嵌入的資源”改為“內容”。但對本例不適用,僅作說明)
===================================================================================================================================
三、參考資料。
1、本例最初的參考:參考資料1
2、對於如何自定義報表每頁顯示多少行的參考:參考資料2
3、關於報表中分組的參考:參考資料3
4、除錯過程遇到問題解決思路的參考:參考資料4
===================================================================================================================================