玩转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报表。

 

posted @ 2013-05-12 10:24  哥本哈士奇(aspnetx)  阅读(6196)  评论(7编辑  收藏  举报