報表服務是微軟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報表。