1. 程式人生 > >Visual Studio 2017 整合Crystal Report為ASP.NET MVC呈現報表

Visual Studio 2017 整合Crystal Report為ASP.NET MVC呈現報表

 選擇語言,點選下一步,同意SAP BUSINESSOBJECTS license Agreement:

選中Yes,install 64-bit runtime選項。點選Finish按鈕,繼續安裝。

安裝結束,所有安裝視窗自動關閉。

開啟你的專案,參考下面幾個類:

開啟Web.Config文件,需要配置Crystal Report:

<configSections>
    <sectionGroup name="businessObjects">
      <sectionGroup name
="crystalReports"> <section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null" /> <section name="crystalReportViewer" type="System.Configuration.NameValueSectionHandler"
/> </sectionGroup> </sectionGroup> </configSections>
configSections Source Code
<assemblies>
        <add assembly="CrystalDecisions.Web, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
        <add assembly="CrystalDecisions.Shared, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"
/> <add assembly="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/> <add assembly="CrystalDecisions.ReportSource, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/> <add assembly="CrystalDecisions.ReportAppServer.Controllers, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/> <add assembly="CrystalDecisions.ReportAppServer.DataDefModel, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/> <add assembly="CrystalDecisions.CrystalReports.Engine, Version=13.0.3500.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/> </assemblies>
assemblies Source Code
<businessObjects>
    <crystalReports>
      <rptBuildProvider>
        <add embedRptInResource="true" />
        <add extension=".rpt" type="CrystalDecisions.Web.Com
             pilation.RptBuildProvider, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
      </rptBuildProvider>    
    </crystalReports>
  </businessObjects>
businessObjects Source Code

接下來,為ASP.NET MVC專案新增一頁網頁是asp.net 的ASPX,網頁名為CurrencyReport.aspx,它自帶有CurrencyReport.aspx.cs如下圖。

對這頁網頁暫時不需新增任何程式碼,稍後建立好.Rpt報表後再來寫程式碼。

現在開始建立.rpt水晶報表:

報表建立完畢,此時開啟上面建立的ASPX網頁。

再開啟.aspx.cs內碼表,編寫載入水晶報表程式:

 string reportPath = Server.MapPath("CurrencyReport.rpt");
            ReportDocument repDoc = new ReportDocument();

            try
            {
                if (!File.Exists(reportPath))
                {
                    Response.Write("指定的報表不存在。 \n");
                }

                repDoc.Load(reportPath);

                repDoc.SetDatabaseLogon("username", "password", "127.0.0.1", "DBname", true);
                this.CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                this.CrystalReportViewer1.HasToggleGroupTreeButton = false;
                this.CrystalReportViewer1.ReportSource = repDoc;
                
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
Source Code

 為程式新增水晶報表完成,我們執行程式,結果如下:

什麼內容也沒有顯示,按F12檢視,還有crv.js載入失敗和bobj is not defind錯誤。

經過研究與測試,我們還做少一步動作。前往電腦C驅動器:C:\inetpub\wwwroot把aspnet_client整個目錄拷貝至專案的根目錄之下。

再次執行程式:

資料還是沒有顯示,水晶報表需要輸入連線資料安全資訊。

解決這個問題,需要開啟載入水晶報表的程式,新增一個方法SetDatabaseLogon,並賦其引數

再次重新整理網頁,上面的對話方塊消失,報表已經正常顯示了》