ReportExecutionService.Render Método

Definição

Processa um relatório específico e o renderiza no formato especificado.

public:
 cli::array <System::Byte> ^ Render(System::String ^ Format, System::String ^ DeviceInfo, [Runtime::InteropServices::Out] System::String ^ % Extension, [Runtime::InteropServices::Out] System::String ^ % MimeType, [Runtime::InteropServices::Out] System::String ^ % Encoding, [Runtime::InteropServices::Out] cli::array <ReportExecution2005::Warning ^> ^ % Warnings, [Runtime::InteropServices::Out] cli::array <System::String ^> ^ % StreamIds);
public byte[] Render(string Format, string DeviceInfo, out string Extension, out string MimeType, out string Encoding, out ReportExecution2005.Warning[] Warnings, out string[] StreamIds);
member this.Render : string * string * string * string * string * Warning[] * String[] -> byte[]
Public Function Render (Format As String, DeviceInfo As String, ByRef Extension As String, ByRef MimeType As String, ByRef Encoding As String, ByRef Warnings As Warning(), ByRef StreamIds As String()) As Byte()

Parâmetros

Format
String

O formato para renderizar o relatório. Esse argumento corresponde a uma extensão de renderização. Extensões suportadas incluem XML, NULL, CSV, IMAGE, PDF, HTML4.0, HTML3.2, MHTML, Excel e Word. Uma lista de extensões suportadas pode ser obtida chamando o ListRenderingExtensions() método.

DeviceInfo
String

Uma string XML que contém o conteúdo específico do dispositivo exigido pela extensão de renderização especificada no Format parâmetro. As configurações do DeviceInfo devem ser passadas como elementos internos de um elemento XML do DeviceInfo. Para mais informações sobre as configurações de informação de dispositivo para formatos de saída específicos, veja Passing Device Information Settings to Rendering Extensions.

Extension
String

[fora] A extensão do arquivo correspondente ao fluxo de saída.

MimeType
String

[fora] O tipo MIME do relatório renderizado.

Encoding
String

[fora] A codificação usada quando o servidor de relatórios renderiza o conteúdo do relatório.

Warnings
Warning[]

[fora] Um array de Warning objetos que descreve quaisquer avisos que ocorreram durante o processamento do relatório.

StreamIds
String[]

[fora] Os identificadores do fluxo. Esses IDs são passados para o RenderStream(String, String, String, String, String) método. Você pode usá-los para renderizar os recursos externos (imagens, etc.) associados a um determinado relatório.

Se a extensão de renderização IMAGE for usada, o método gera um array vazio em StreamIds.

Retornos

Byte[]

Um array de Bytes[] do relatório no formato especificado.

Exemplos

Para compilar o exemplo de código a seguir, você deve consultar o WSDL do Reporting Services e importar certos namespaces. Para mais informações, veja Exemplos de Código Compilando e Executando. O exemplo de código a seguir renderiza um relatório em MHTML e o salva como um arquivo .mht no disco.

Imports System  
Imports System.IO  
Imports System.Web.Services.Protocols  
Imports myNamespace.MyReferenceName  

Class Sample  
    Public Shared Sub Main()  
        Dim rs As New ReportExecutionService()  
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials  
        rs.Url = "http://myserver/reportserver/ReportExecution2005.asmx"  

        ' Render arguments  
        Dim result As Byte() = Nothing  
        Dim reportPath As String = "/AdventureWorks Sample Reports/Employee Sales Summary "  
        Dim format As String = "MHTML"  
        Dim historyID As String = Nothing  
        Dim devInfo As String = "<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>"  

        ' Prepare report parameter.  
        Dim parameters(2) As ParameterValue  

        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"  

        Dim credentials As DataSourceCredentials() = Nothing  
        Dim showHideToggle As String = Nothing  
        Dim encoding As String = ""  
        Dim mimeType As String = ""  
        Dim warnings As Warning() = Nothing  
        Dim reportHistoryParameters As ParameterValue() = Nothing  
        Dim streamIDs As String() = Nothing  

        Dim execInfo As New ExecutionInfo  
        Dim execHeader As New ExecutionHeader()  
        Dim SessionId As String  
        Dim extension As String = ""  

        rs.ExecutionHeaderValue = execHeader  

        execInfo = rs.LoadReport(reportPath, historyID)  

        rs.SetExecutionParameters(parameters, "en-us")  

        SessionId = rs.ExecutionHeaderValue.ExecutionID  
        Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID)  

        Try  
            result = rs.Render(format, devInfo, extension, _  
               encoding, mimeType, warnings, streamIDs)  

            execInfo = rs.GetExecutionInfo()  

            Console.WriteLine("Execution date and time: {0}", execInfo.ExecutionDateTime)  

        Catch e As SoapException  
            Console.WriteLine(e.Detail.OuterXml)  
        End Try  

        ' Write the contents of the report to an MHTML file.  
        Try  
            Dim stream As FileStream = 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 e As Exception  
            Console.WriteLine(e.Message)  
        End Try  
    End Sub 'Main  
End Class  
using System;  
using System.IO;  
using System.Web.Services.Protocols;  
using myNamespace.MyReferenceName;  

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);  
        }  

    }  
}  

Comentários

A tabela abaixo mostra informações sobre cabeçalhos e permissões sobre esta operação.

Uso do Cabeçalho SOAP (Em) TrustedUserHeaderValue

(Em) ExecutionHeaderValue

(Fora) ServerInfoHeaderValue
Modo Nativo Necessário Permissões No relatório principal e em todos os subrelatórios: ReadProperties E ExecuteAndView
Permissões Necessárias no Modo SharePoint No relatório principal e em todos os subrelatórios: <xref:Microsoft.SharePoint.SPBasePermissions.ViewListItems>

Render gera um relatório processado associado à execução do relatório identificada no ExecutionInfo cabeçalho. Se não existir snapshot temporário para o relatório processado no estado de execução, esse método executará o relatório (se todos os requisitos de credenciais e parâmetros forem atendidos), resultando na criação de um snapshot temporário para o estado de execução. Se o relatório for reprocessado porque os valores dos parâmetros não consultados mudaram, um novo snapshot temporário é criado. Para mais informações sobre o estado de execução, veja Identificar o Estado de Execução.

Se as opções de execução estiverem configuradas para cache ou snapshot de execução, a chamada pode Render usar um snapshot existente.

Se o relatório for configurado para cache e os valores dos parâmetros fornecidos e credenciais coincidirem, a cópia em cache do snapshot pode ser carregada em vez de processar o relatório.

Se os requisitos de credenciais e parâmetros não forem atendidos, esse método retornará um erro.

Chamadas subsequentes podem Render ser usadas para buscar páginas adicionais do relatório se a extensão de renderização suportar especificar múltiplas páginas.

Uma limitação do método Render é que a saída não pode ser transmitida em streaming, então todo o arquivo deve estar em memória.

Por favor, consulte Identificação do Estado de Execução para uma discussão sobre o ciclo de vida da execução, que inclui uma descrição das etapas necessárias para carregar e renderizar um relatório.

Aplica-se a