【问题标题】:Programmatically Export SSRS report from sharepoint using ReportService2010.asmx使用 ReportService2010.asmx 以编程方式从共享点导出 SSRS 报告
【发布时间】:2013-01-23 11:56:23
【问题描述】:

我必须以编程方式将 ssrs 报告导出到 excel,添加服务参考

http:/siteurl/_vti_bin/ReportServer/ReportService2010.asmx

http:/siteurl/_vti_bin/ReportServer/ReportExecution2005.asmx

谁能提供一个工作博客

【问题讨论】:

    标签: excel sharepoint reporting-services ssrs-2008


    【解决方案1】:

    我这样做是为了我目前使用 VS 2012 .NET 4.5 来实现 PDF 报告的报告自动化。

    A.为了便于使用,编译您自己的代理类比每次都引用 Web 服务更容易,因为您可能会忘记服务名称。

    来自 Visual Studio 命令提示符:

        wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" http://<Server Name>/reportserver/reportservice2010.asmx?wsdl
    

    参考:http://msdn.microsoft.com/en-us/library/ms155134(v=sql.105).aspx (仅当您想获取信息并执行时才需要服务:ReportExecution2005 和 ReportService2010。如果您只想渲染,则只需要 ReportExecution2005)

    B.创建代理类后,将其放入库项目中以供重用恕我直言。如果您有多个环境,您可能需要在配置文件中构建一些包装类来进行写入和一些服务器。

    C.编写一些引用该库的代码并在 C# 中构建第一次报告:

        using System;
        using System.IO;
        using System.Web.Services.Protocols;
        using myNamespace.MyReferenceName;  // YOUR PROXY PROJECT 
    
        class Sample
        {
        static void Main(string[] args)
        {
            ReportExecutionService rs = new ReportExecutionService();
            rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
            rs.Url = "http://myserver/reportserver/ReportExecution2005.asmx";
    
            // Render arguments
            byte[] result = null;
            string reportPath = "/AdventureWorks Sample Reports/Employee Sales Summary";
            string format = "MHTML";
            string historyID = null;
            string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";
    
            // Prepare report parameter.
            ParameterValue[] parameters = new ParameterValue[3];
            parameters[0] = new ParameterValue();
            parameters[0].Name = "EmpID";
            parameters[0].Value = "288";
            parameters[1] = new ParameterValue();
            parameters[1].Name = "ReportMonth";
            parameters[1].Value = "6"; // June
            parameters[2] = new ParameterValue();
            parameters[2].Name = "ReportYear";
            parameters[2].Value = "2004";
    
            DataSourceCredentials[] credentials = null;
            string showHideToggle = null;
            string encoding;
            string mimeType;
            string extension;
            Warning[] warnings = null;
            ParameterValue[] reportHistoryParameters = null;
            string[] streamIDs = null;
    
            ExecutionInfo execInfo = new ExecutionInfo();
            ExecutionHeader execHeader = new ExecutionHeader();
    
            rs.ExecutionHeaderValue = execHeader;
    
            execInfo = rs.LoadReport(reportPath, historyID);
    
            rs.SetExecutionParameters(parameters, "en-us"); 
            String SessionId = rs.ExecutionHeaderValue.ExecutionID;
    
            Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID);
    
    
            try
            {
                result = rs.Render(format, devInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);
    
                execInfo = rs.GetExecutionInfo();
    
                Console.WriteLine("Execution date and time: {0}", execInfo.ExecutionDateTime);
    
    
            }
            catch (SoapException e)
            {
                Console.WriteLine(e.Detail.OuterXml);
            }
            // Write the contents of the report to an MHTML file.
            try
            {
                FileStream stream = File.Create("report.mht", result.Length);
                Console.WriteLine("File created.");
                stream.Write(result, 0, result.Length);
                Console.WriteLine("Result written to the file.");
                stream.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
    
        }
        }
    

    取自这里:http://msdn.microsoft.com/en-us/library/reportexecution2005.reportexecutionservice.render(v=sql.105).aspx

    D. (可选):您可能想要处理刷新 SSRS 托管服务器上的 WebService。默认情况下,它每 12 小时循环一次,从而使第一个报告在此之后呈现缓慢。您只需每隔 10 小时左右对位于 http:// (servername)/ReportServer 的服务端点进行一次网络调用即可刷新这些服务。我使用了一个名为 Visual Cron 的工具,它可以设置自动化任务,你也可以尝试更改 SSRS 服务配置,创建自己的保持活动服务等。基本上你只需要更改设置或与它交谈即可保持它打开了。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多