博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何将SSRS中的报表转换成图片
阅读量:5355 次
发布时间:2019-06-15

本文共 2878 字,大约阅读时间需要 9 分钟。

在SSRS的程序框架下,一张报表有可能被多个客户端以不同的方式应用.譬如: Web页面可能需要HTML格式的报表,而打印时需要emf格式的报表.

在打印报表时,经常会先将它专换成emf格式的图片,再发送给打印客户端使用.那么如何实现之间的转换呢?

 1 
  
 2 
'
ReportingService是由web service的WSDL生成的代理类(Proxy)
 3 
Public
 
Class
 RTLReportService
 4 
        
Inherits
 ReportingService
 5 
        
Implements
 RTSystems.Framework.Reporting.IReportService
 6 
 7 
        
Public
 
Overloads
 
Function
 Render(
ByVal
 report 
As
 Framework.Reporting.IReport) 
As
 
Byte
()() 
Implements
 Framework.Reporting.IReportService.Render
 8 
          
 9 
10 
            
Dim
 deviceInfo 
As
 
String
 
=
 
Nothing
11 
            
Dim
 
format
 
As
 
String
 
=
 
"
IMAGE
"
12 
            
Dim
 firstPage 
As
 [
Byte
]() 
=
 
Nothing
13 
            
Dim
 encoding 
As
 
String
 
=
 
Nothing
14 
            
Dim
 mimeType 
As
 
String
 
=
 
Nothing
15 
            
Dim
 warnings 
As
 Warning() 
=
 
Nothing
16 
            
Dim
 reportHistoryParameters 
As
 ParameterValue() 
=
 
Nothing
17 
            
Dim
 streamIDs 
As
 
String
() 
=
 
Nothing
18 
            
Dim
 pages 
As
 [
Byte
]()() 
=
 
Nothing
19 
20 
            
'
 Build device info based on the start page 
21 
            deviceInfo 
=
 [
String
].Format(
"
<DeviceInfo><OutputFormat>{0}</OutputFormat></DeviceInfo>
"
"
emf
"
)
22 
23 
            
'
Exectute the report and get page count. 
24 
            
Try
25 
                
'
 Renders the first page of the report and returns streamIDs for 
26 
                
'
 subsequent pages 
27 
                
'
firstPage = rs.Render(reportPath, format, Nothing, deviceInfo, Nothing, Nothing, _
28 
                
'
Nothing, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)
29 
30 
                
'
Replacement code by sjs to handle parameters
31 
32 
                
Dim
 lstParams 
As
 
New
 List(
Of
 ParameterValue)
33 
34 
                
For
 
Each
 param 
As
 RTSystems.Framework.Reporting.IReportParameter 
In
 report.Paramers
35 
                    
Dim
 paramValue 
As
 
New
 ParameterValue()
36 
                    paramValue.Name 
=
 param.Name
37 
                    paramValue.Value 
=
 param.Value
38 
                    lstParams.Add(paramValue)
39 
                
Next
40 
41 
                
Dim
 parameters() 
As
 ParameterValue 
=
 lstParams.ToArray()
42 
43 
           
44 
                firstPage 
=
 
Me
.Render(report.ReportName, 
format
Nothing
, deviceInfo, parameters, 
Nothing
, _
45 
                
Nothing
, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)
46 
47 
48 
                
'
 The total number of pages of the report is 1 + the streamIDs 
49 
                m_numberOfPages 
=
 streamIDs.Length 
+
 
1
50 
                pages 
=
 
New
 [
Byte
](m_numberOfPages 
-
 
1
)() {}
51 
52 
                
'
 The first page was already rendered 
53 
                pages(
0
=
 firstPage
54 
55 
                
For
 pageIndex 
As
 
Integer
 
=
 
1
 
To
 m_numberOfPages 
-
 
1
56 
                    
'
 Build device info based on start page 
57 
                    deviceInfo 
=
 [
String
].Format(
"
<DeviceInfo><OutputFormat>{0}</OutputFormat><StartPage>{1}</StartPage></DeviceInfo>
"
"
emf
"
, pageIndex 
+
 
1
)
58 
                    
'
pages(pageIndex) = rs.Render(reportPath, format, Nothing, deviceInfo, Nothing, Nothing, _
59 
                    
'
Nothing, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)
60 
                    pages(pageIndex) 
=
 
Me
.Render(report.ReportName, 
format
Nothing
, deviceInfo, parameters, 
Nothing
, _
61 
                    
Nothing
, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)
62 
                
Next
63 
64 
            
Finally
65 
66 
            
End
 
Try
67 
68 
            
Return
 pages
69 
        
End Function
70 
71 
    
End Class

 

转载于:https://www.cnblogs.com/beiguren/archive/2010/01/13/1646721.html

你可能感兴趣的文章
洛谷P1005 矩阵取数游戏
查看>>
在Silverlight中使用HierarchicalDataTemplate为TreeView实现递归树状结构
查看>>
无线通信基础(一):无线网络演进
查看>>
关于python中带下划线的变量和函数 的意义
查看>>
linux清空日志文件内容 (转)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
Ajax : load()
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Linux自己安装redis扩展
查看>>
luoguP3414 SAC#1 - 组合数
查看>>
图片点击轮播(三)-----2017-04-05
查看>>
直播技术细节3
查看>>
《分布式服务架构:原理、设计于实战》总结
查看>>
java中new一个对象和对象=null有什么区别
查看>>
字母和数字键的键码值(keyCode)
查看>>
IE8调用window.open导出EXCEL文件题目
查看>>
Spring mvc初学
查看>>
VTKMY 3.3 VS 2010 Configuration 配置
查看>>
01_1_准备ibatis环境
查看>>