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 + -
显示快捷键?