[Asp.net] 利用ReportViewer建立報表

  • 1723
  • 0

利用ReportViewer建立報表

環境建置

如發現沒有ReportViewer相關控制項
請依以下步驟進行建置:

1.控制台 > 新增移除程式 > 選擇VisualStudio

2.點選變更

3.點選修改

4.勾選﹝Microsoft SQL Server Data Tools﹞

5.點選更新後即可完成建置

 

實作程式

1.加入參考

2.宣告資料來源

  • 加入資料集

  • 設定資料集內容
    • 用拖曳方式可以加入資料集
    • 對資料集的資料表按右鍵編輯可以修改SQL Command

3.宣告報表格式

  • 加入報表

  • 繪製報表

4.撰寫程式(以下是以.net MVC為範例)

        public ActionResult Index()
        {
            #region Local Report 所需參數
            string reportType = "Excel"; //Excel, PDF, Word, and Image
            string deviceInfo = "";
            string mimeType;
            string encoding;
            string fileNameExtension;
            string[] streams;
            Warning[] warnings;
            #endregion

            #region 宣告Report物件
            LocalReport report = new LocalReport();
            report.ReportPath = Server.MapPath("~/Reports/MemberReport.rdlc");  // Report檔案位置
            #endregion

            #region 取得報表所需資料(*.xsd檔案)
            #region 前置作業
            var ds = new Reports.Company(); // 宣告報表資料物件
            var adapter = new Reports.CompanyTableAdapters.MembersReportTableAdapter(); // 宣告資料接口(adapter)物件
            adapter.Fill(ds.MembersReport); // 利用接口(adapter)處理資料流
            #endregion

            #region 填入資料
            ReportDataSource rds = new ReportDataSource("MemberReport", ds.MembersReport.ToList()); // 由ds實際取得資料
            report.DataSources.Add(rds);    // 填入Report物件 
            #endregion
            #endregion

            #region 重新定義報表內容格式
            var renderedBytes = report.Render(
                                    reportType,
                                    deviceInfo,
                                    out mimeType,
                                    out encoding,
                                    out fileNameExtension,
                                    out streams,
                                    out warnings
                                );
            #endregion

            //加這一行android下載才會有副檔名
            if (Response != null)
                Response.AddHeader("content-disposition", "attachment; filename=download." + fileNameExtension);

            return File(renderedBytes, mimeType);
        }
參考資料

https://msdn.microsoft.com/zh-tw/library/ms251839(v=vs.90).aspx
https://jeffprogrammer.wordpress.com/2015/12/16/%E4%BD%BF%E7%94%A8-reportviewer-%E8%A3%BD%E4%BD%9C%E5%A0%B1%E8%A1%A8-%E4%B8%80/
https://dotblogs.com.tw/jimmyyu/2009/08/30/10311

Write By Charley Chang 


新手發文,若有錯誤還請指教,
歡迎留言或Mail✉給我

創用 CC 授權條款


本著作係採用創用 CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款授權.