玩轉SSRS第四篇---在程序中使用報表


報表服務是微軟SQLSERVER商業智能其中的一個組件,借助報表服務,用戶可以制作各種各樣的報表,無論是簡單的還是復雜的報表,同時系統提供訂閱功能方便用戶對報表進行訂閱。此外,開發人員也可以很容易地把一個SSRS報表集成到自己的winform或者webform程序中。

此篇將介紹如何在應用程序中使用報表服。

 

SSRS報表不僅可以在報表管理界面中查看,也可以把制作好的報表輕松的加入到自己的應用程序中,使自己的應用程序中可以很容易地整合報表功能。

首先打開Visual Studio 2012。這里我們直接使用最新版本的Visual Studio來演示,早期版本的方法沒有什么變化所以也可以參考本文的方法。

新建一個asp.net項目,ASP.NET Empty Web Application。

為項目添加一個asp.net頁面。在Solution Explorer中右鍵項目名稱然后Add->New Item…

選擇Web Form。點擊OK。

點擊網頁設計界面下面的Design按鈕,將視圖切換到設計模式。

在工具箱中首先找到AJAX Extensions下的ScriptManager控件,后續的報表控件需要這個AJAX基礎控件的支持。

將ScriptManager控件拖拽到網頁中后,可以看到設計模式下其占位。

接下來找到工具箱中ReportViewer控件,拖拽到網頁設計界面中。

點擊ReportViewer控件后,點擊右邊向右的箭頭,會彈出屬性設置界面。首先Choose Report選擇Server Report。

Report Server Url屬性設置為先前部署的報表服務實例地址:

http://wade-pc/reportserver

留意地址是reportserver地址而不是reports。

然后指定報表路徑。

/Report Project1/Report1

前面要帶/符號,報表名稱沒有rdl后綴。

設置完畢后網頁的設計界面基本如下圖所示。

設置完畢后,查看下效果,但首先在Solution Explorer的asp.net頁面中右鍵一下剛才建立的頁面,選擇Set As Start Page.

點擊工具欄的Inter Explorer。

系統自動打開IE瀏覽器,可以看到在瀏覽器中SSRS報表中的展現效果。

 

在應用程序中,可以為報表指定參數。這是一個比較有用的功能,比如程序只希望用戶看到當年的數據,那么就可以在代碼里直接給定參數。

在程序中給參數的方法請參考如下的代碼,首先加入一個引用:

using Microsoft.Reporting.WebForms;

然后在Page_Load中加入如下代碼:

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

List<ReportParameter> paras = new List<ReportParameter>();

paras.Add(new ReportParameter("YEAR", "2007"));

ReportViewer1.ServerReport.SetParameters(paras);

}

}

 

點擊瀏覽,可以看到參數直接寫到了報表參數中。

另外,可以加入下面的語句讓報表中的參數不被顯示出來。

ReportViewer1.ShowParameterPrompts = false;

 

此外,Report Viewer有導出功能。有時候我們希望直接將報表導出成PDF或者Excel,通過下面的代碼可以簡單的實現:

//1: Excel, other: PDF

int OutType = 0;

 

try

{

//ReportViewer1.ProcessingMode = ProcessingMode.Remote;

 

Warning[] warnings;

string[] streamids;

string mimeType;

string encoding;

string filenameExtension;

 

if (OutType == 1)

{

byte[] bytes = ReportViewer1.ServerReport.Render(

"Excel", null, out mimeType, out encoding, out filenameExtension,

out streamids, out warnings);

 

Response.Clear();

Response.Buffer = true;

Response.ContentType = "application/vnd.xls";

Response.AddHeader("content-disposition", "attachment;filename=" + "Report.xls");

 

Response.BinaryWrite(bytes);

}

else

{

byte[] bytes = ReportViewer1.ServerReport.Render(

"PDF", null, out mimeType, out encoding, out filenameExtension,

out streamids, out warnings);

 

Response.Clear();

Response.Buffer = true;

Response.ContentType = "application/pdf";

 

Response.BinaryWrite(bytes);

}

 

Response.End();

}

catch (Exception ex)

{

 

}

運行代碼后,可以看到報表是直接在嵌入到IE中的PDF閱讀器打開的。

當把變量OutType改為非1的值,可以看到自動生成Excel的效果。在IE10種會直接彈出下載頁面。

點擊打開之后,本地的Excel啟動,可以看到導到Excel中的數據。

 

接下來,簡單演示如何在Winform使用SSRS報表。操作的方法跟asp.net下的方法相似,新建好Winform程序之后,同樣在工具欄中找到Report Viewer控件然后拖拽到窗體里,然后跟在asp.net一樣設置好相應屬性就可以。

跟asp.net下一樣,為Report Viewer設置相應屬性。

運行項目,可以看到SSRS在Winform下的展現效果。

此外,在Winform下往報表中傳遞參數的方法跟在asp.net下的一樣,在此不做特殊介紹。

 

 

至此,在應用程序中使用SSRS報表簡單介紹至此,可以看到在應用程序中主要通過Report Viewer控件,而且無論在網頁或者Winform程序當中,操作Report Viewer的方法都很類似。順便提一句,如果要在服務器上部署帶有此功能的程序,需要確認Report Viewer已經安裝好。最新版本Report Viewer 2012的下載地址。

http://www.microsoft.com/en-us/download/details.aspx?id=35747

圍繞 Report Viewer的應用擴展很多,試想在程序中生成對應的Excel或者pdf報告,沒有必要去操作com對象或者itextsharp,直接用asp.net的Report Viewer的Render方法就可以很容易的借助瀏覽器生成Excel或者PDF報表。

 


免責聲明!

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



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