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

    ---------------------------------------------------------------

    aspnetxBI笔记系列索引:

    使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能

    一起玩转SQL Server 2012 下的分析服务

    使用SQL Server分析服务定位目标用户

    ---------------------------------------------------------------

    来自博客园aspnetx宋卫东

  • 相关阅读:
    [十二省联考2019]字符串问题:后缀数组+主席树优化建图
    HAOI2018简要题解
    使用单调队列维护决策三元组实现决策单调性优化DP的一些细节
    杜教筛&min_25筛复习
    分治NTT:我 卷 我 自 己
    高级(并不)多项式算法总结
    导数与微分简单总结(updated)
    退役前的做题记录
    USACO2018DEC PLATINUM
    USACO2018DEC GOLD
  • 原文地址:https://www.cnblogs.com/aspnetx/p/3073751.html
Copyright © 2020-2023  润新知