在VS2013中使用水晶報表


又遇到了在B/S系統中打印,打印格式要求比較高,打印出的效果要求高大上。用VS2013中微軟自帶的報表,實在難以實現應用的效果,主要問題表現在:

1.不能插入用Word做好的打印模板,自己按照模板來做感覺比較費事,實現不了Word的打印效果,一旦打印模板改變,調整格式比較麻煩。

2.在火狐、谷歌瀏覽器中打印按鈕不顯示。

想試試水晶報表,無奈VS2013中已經不集成該報表了。需要單獨下載安裝http://scn.sap.com/docs/DOC-7824。大家可以根據自己的VS版本下載合適的水晶報表插件。但是一定要注意下載exe可安裝文件,而不是msi安裝文件,否則VS里面找不到添加水晶報表的項。即下圖中紅色方框內的說明。同時也要下載一個clickonce32/64,在服務器部署是需要。

image

安裝好之后,在VS的新建項中發現了熟悉的Crystal Reports如下圖:

image

在詳細資料處【右鍵】--【插入】--【OLE對象】--【由文件創建】選中要打印的模板。拖動鼠標,放置。

在字段資源管理器中【參數字段】--【右鍵】--【新建參數】。

image

把參數拖放到要動態獲取數據的地方。

image

新建Web窗體,拖放CrystalReportViewer控件,設置相關屬性。其中如果不需要左側的組樹,需要設置ToolPanelView=“None”。這是與當時在VS2008中用水晶報表不同的地方。

在頁面后台代碼動態設置字段值。如下:

protected void Page_Load(object sender, EventArgs e)
       {
           if (!IsPostBack)
           {
               ReportDocument testReport = new ReportDocument();
               //取到報表文件物理路徑 
               string reportPath = Server.MapPath("~/CrystalReport1.rpt");
               //加載報表文件 
               testReport.Load(reportPath);

 

               this.CrystalReportViewer1.ReportSource = testReport;

               ParameterFields pfs = new ParameterFields();
               ParameterField pf = new ParameterField();
               ParameterDiscreteValue pv = new ParameterDiscreteValue();


               pf.ParameterFieldName = "SQR";
               pv.Value = "一衣孤行";
               pf.CurrentValues.Add(pv);
               pfs.Add(pf);

 

               this.CrystalReportViewer1.ParameterFieldInfo = pfs;
           }
       } 

 

在VS中運行調試,打印模板不見了,只有“圖像”二字,結果如下:

image

右鍵圖片屬性,看到圖片的路徑是:http://localhost:/CrystalImageHandler.aspx?dynamicimage=cr_tmp_image_3ab921d0-cd7d-4fb9-a724-fd12c580b18d.png。問題是我的項目中也沒有CrystalImageHandler.aspx啊。新增空白CrystalImageHandler.aspx頁面。重新運行,OK。效果如下:

SNAGHTML1c15394

在IIS中發布。首先出現如下錯誤:

未能加載文件或程序集“log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304”或它的某一個依賴項。系統找不到指定的文件。

問題是我也沒用到log4net啊。按照網上的方法把C:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll (不同的版本log4net的版本可能不同,可以用dos命令符在C:\Windows\assembly文件夾下用dir命令逐級找到)copy出來,放到部署之后的程序bin文件夾下。刷新頁面,出現如下錯誤:

未能加載文件或程序集“log4net”或它的某一個依賴項。試圖加載格式不正確的程序。

這個錯誤很熟悉吧,64位操作系統IIS應用程序池未啟用32位應用程序,設為True。刷新頁面,出現如下錯誤:

不支持的操作。無法在 C++ 堆棧中打開由 JRC 引擎處理的文檔。

發現在發布的時候VS不會把rpt文件發布過來,直接把rpt拷貝過來。刷新頁面,OK了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM