render.vb

来自「< SQL Server2005程序设计>」· VB 代码 · 共 130 行

VB
130
字号
Imports VB_Forms.ReportServer
Imports VB_Forms.ReportExecution
Imports System.IO

Public Class RenderRpt
    Private rptSrvr As New ReportingService2005
    Private rptExec As New ReportExecutionService
    Private catItem() As CatalogItem
    Private RenderPath As String = "c:\"
    Private rType As String = "HTML4.0"
    Private rExt As String = ".HTML"


    Private Sub Render_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        rptSrvr.Credentials = System.Net.CredentialCache.DefaultCredentials
        rptSrvr.Url = "http://localhost/reportserver/reportservice2005.asmx"
        Dim topNode As TreeNode = Nothing
        Dim topNodeIndex As Integer
        catItem = rptSrvr.ListChildren("/", True)
        For Each item As CatalogItem In catItem
            Dim newNode As TreeNode = New TreeNode(item.Name)
            Select Case item.Type
                Case ItemTypeEnum.DataSource
                    TreeView1.Indent = 1
                Case ItemTypeEnum.Folder
                    TreeView1.Indent = 0
                    topNode = newNode
                Case ItemTypeEnum.LinkedReport
                    TreeView1.Indent = 1
                Case ItemTypeEnum.Model
                    TreeView1.Indent = 1
                Case ItemTypeEnum.Report
                    TreeView1.Indent = 1
                Case ItemTypeEnum.Resource
                    TreeView1.Indent = 1
                Case ItemTypeEnum.Unknown
                    TreeView1.Indent = 1
            End Select
            If topNode Is newNode Then
                topNodeIndex = TreeView1.Nodes.Add(newNode)
            ElseIf topNode IsNot Nothing Then
                TreeView1.Nodes(topNodeIndex).Nodes.Add(newNode)
            End If

        Next
        TextBox2.Text = RenderPath
    End Sub

    Private Sub btnGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerate.Click
        Dim renderedFile As String = RenderPath & TextBox1.Text
        If CheckBox1.Checked Then
            renderedFile &= rExt
        End If
        Label2.Text = ""
        If TextBox1.Text <> "" AndAlso TreeView1.SelectedNode.Level > 0 Then
            Dim ctime As DateTime = Now
            renderRpt("/" & Replace(TreeView1.SelectedNode.FullPath.ToString, "\", "/"), renderedFile, rType)
            Label2.Text = String.Format("Time to render: {0:0.00} Seconds", (Now - ctime).TotalSeconds)
        ElseIf TextBox1.Text = "" Then
            Label2.Text = "A file name must be specified"
        Else
            Label2.Text = "A report must be selected"
        End If
    End Sub

    Private Sub renderRpt(ByVal fullPath As String, ByVal outputFile As String, ByVal RenderType As String)
        rptExec.Credentials = System.Net.CredentialCache.DefaultCredentials
        rptExec.Url = "http://localhost/reportserver/reportexecution2005.asmx"
        Dim warn() As VB_Forms.ReportExecution.Warning = Nothing
        Dim streamid() As String = Nothing
        Dim ext As String = ""
        Dim mime As String = ""
        Dim encode As String = ""
        Dim execInfo As New ExecutionInfo
        Dim execHeader As New ExecutionHeader()

        rptExec.ExecutionHeaderValue = execHeader

        Dim SessionId As String = rptExec.ExecutionHeaderValue.ExecutionID

        execInfo = rptExec.LoadReport("/chap21" & fullPath, Nothing)

        Dim rslt() As Byte = rptExec.Render(RenderType, "", ext, mime, encode, warn, streamid)

        Dim stream As FileStream = File.Create(outputFile, rslt.Length)
        stream.Write(rslt, 0, rslt.Length)
        stream.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop
        FolderBrowserDialog1.Description = "Select an output location"
        FolderBrowserDialog1.ShowDialog()
        RenderPath = FolderBrowserDialog1.SelectedPath.ToString
        TextBox2.Text = RenderPath
    End Sub


    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
    RadioButton1.CheckedChanged, _
    RadioButton2.CheckedChanged, _
    RadioButton3.CheckedChanged, _
    RadioButton4.CheckedChanged, _
    RadioButton5.CheckedChanged, _
    RadioButton6.CheckedChanged
        Dim Rbutton As RadioButton = DirectCast(sender, RadioButton)
        If Rbutton.Checked Then
            Select Case Rbutton.Text.ToUpper
                Case "HTML"
                    rType = "HTML4.0"
                    rExt = ".HTML"
                Case "EXCEL"
                    rType = "Excel"
                    rExt = ".XLS"
                Case "PDF"
                    rType = "PDF"
                    rExt = ".PDF"
                Case "XML"
                    rType = "XML"
                    rExt = ".XML"
                Case "CSV"
                    rType = "CSV"
                    rExt = ".CSV"
                Case "IMAGE"
                    rType = "IMAGE"
                    rExt = ".TIFF"
            End Select
        End If
    End Sub
End Class

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?