天天看點

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

前言

簡單報表我們可以通過label、textBox和PrintDialog來實作,但是一般在實際生産過程中,使用者的報表需求一般都是比較複雜的。

本篇主要記錄對于傳統中國式複雜報表的處理方法和解決思路,為後續的學習、開發做下筆記,不足之處請指正。

ReportViewer控件包安裝 

建立一個Winfrm應用程式,右鍵解決方案,選中NuGet包管理器,搜尋Report.Viewer、SqlServer和ReportingServices,完成控件包的安裝。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

安裝完成後,可以在左側工具箱中看到ReportViewer控件。

Rdlc Report安裝

單擊菜單 “擴充”-“管理擴充”,搜尋關鍵字Rdlc Report,完成下載下傳,關閉所有VS項目後,系統自動安裝(大約需要10分鐘,耐心等待)。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

安裝初始化

單擊“Modify”開始安裝

耐心等待完成安裝。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

添加資料集

右鍵項目,選擇“添加”-“建立項”,選擇“資料集”。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

添加必要的資料集字段,用于後續報表中需要顯示的内容。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

添加報表rdlc

右鍵項目,選擇“添加”-“建立項”,選擇“Visual C#項”,選擇時需要注意,這裡的報表是繁體字(隻有rdlc子產品安裝成功才可以選到報表)。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

此時,我們可以在如下界面進行報表模闆的相關設定了。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

空白處單擊右鍵,選擇“插入”-“矩陣”,選擇我們剛剛建立的資料源。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉
C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

然後根據需要調整模闆,插入行或者列,合并(插入列後即可實作合并單元格)或者拆分單元格。

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉
C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

WinFrm前台設定

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

核心代碼

1 private void btnPrint_Click(object sender, EventArgs e)
 2         {
 3             // Jeremy 2019.11.26
 4             // 構造新的DataTable,字段名稱和DataTableMain中的一緻
 5             DataTable dt = new DataTable();
 6             dt.Columns.Add("dtReportName");
 7             dt.Columns.Add("dtName");
 8             dt.Columns.Add("dtAge");
 9             dt.Columns.Add("dtBirthday");
10             dt.Columns.Add("dtWorkNO");
11             dt.Columns.Add("dtInTime");
12             dt.Columns.Add("dtCall");
13             dt.Columns.Add("dtJob");
14             dt.Columns.Add("dtDegree");
15             dt.Columns.Add("dtRemark");
16             // 動态添加前台傳來的資料
17             dt.Rows.Add(new object[] { this.txtReportName.Text, this.txtName.Text, this.txtAge.Text, this.dtpBirthday.Value.ToString(), this.txtWorkNO.Text, this.dtpInTime.Value.ToString(),
18                         this.txtCall.Text, this.txtJob.Text, this.txtDegree.Text, this.txtRemark.Text});
19             // 名稱需要用我們之前設定的 "ReportMain.rdlc" 
20             // 另外需要将ReportMain.rdlc檔案複制到目前可執行程式目錄下
21             this.reportViewerMain.LocalReport.ReportPath = "ReportMain.rdlc";
22             this.reportViewerMain.LocalReport.DataSources.Clear();
23             // 名稱需要用我們之前設定的 "DataSetReport"
24             this.reportViewerMain.LocalReport.DataSources.Add(new ReportDataSource("DataSetReport", dt));
25             this.reportViewerMain.RefreshReport();
26         }      

效果展示

C# - VS2019 WinFrm應用程式開發報表 - ReportViewer控件初涉

  作者:Jeremy.Wu

  出處:https://www.cnblogs.com/jeremywucnblog/

  本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。