报表服务是微软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报表。