以pdf的形式获取SSRS报告

时间:2012-03-11 13:33:30

标签: vb.net reporting-services

我希望自动以pdf(或任何其他便携式格式)的形式获得SSRS报告。我的意思是当用户按下按钮而不是在报表视图中查看报表时,它应该转换为pdf

如果可能,请给我Vb.Net代码。

欢迎任何帮助!

由于

1 个答案:

答案 0 :(得分:1)

请尝试此代码。

Private Sub GenerateReport(ParamList as hashtable)
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials
        rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials

        Dim historyID As String = Nothing
        Dim deviceInfo As String = Nothing
        Dim format As String = "PDF"
        Dim results As Byte()
        Dim encoding As String = String.Empty
        Dim mimeType As String = String.Empty
        Dim extension As String = String.Empty
        Dim warnings As ReportExecution.Warning() = Nothing
        Dim streamIDs As String() = Nothing
        Dim filename As String = "C:\MyReport.pdf"        ' Change to where you want to save
        Dim _reportName As String = "/Sales/MyReport"  ' Change to be your report
        Dim _historyID As String = Nothing
        Dim _forRendering As Boolean = False
        Dim _values As ReportingService.ParameterValue() = Nothing
        Dim _credentials As ReportingService.DataSourceCredentials() = Nothing
        Dim _parameters As ReportingService.ReportParameter() = Nothing

        _parameters = rs.GetReportParameters(_reportName, _historyID, _forRendering, _values, _credentials)

        Dim ei As ReportExecution.ExecutionInfo = rsExec.LoadReport(_reportName, historyID)
        Dim parameters(_parameters.Length - 1) As ReportExecution.ParameterValue

        for param as integer = 0 to _parameters.count - 1
            parameters(param) = New ReportExecution.ParameterValue
            parameters(param).Label = _parameters(param).name
            parameters(param).Name = _parameters(param).name
            parameters(param).Value = ParamList(param)
        next

        rsExec.SetExecutionParameters(parameters, "en-us")
        results = rsExec.Render(format, deviceInfo, extension, mimeType, encoding, warnings, streamIDs)

        Dim stream As New System.IO.FileStream(filename, IO.FileMode.OpenOrCreate)

        stream.Write(results, 0, results.Length)
        stream.Close()
    End Sub