在SSRS 2008 中编写程序来生成报表(下)

日期: 2009-12-02 作者:Roman Rehak翻译:孙瑞 来源:TechTarget中国 英文

现在,所有的设置都已经弄好,你可以声明一个字节数字对象,调用Render() method然后保存结果到一个文件:   Byte[] results = rsExec.Render(format,   deviceInfo, out extension,   out mimeType, out encoding,   out warnings, out streamIDs);   FileStream stream = File.OpenWrite(fileName);   stream.Write(results, 0, results.Length);   stream.Close(); ……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

现在,所有的设置都已经弄好,你可以声明一个字节数字对象,调用Render() method然后保存结果到一个文件:

  Byte[] results = rsExec.Render(format,

  deviceInfo, out extension,

  out mimeType, out encoding,

  out warnings, out streamIDs);

  FileStream stream = File.OpenWrite(fileName);

  stream.Write(results, 0, results.Length);

  stream.Close();

  在许多业务场景中,编程实现报表绘制是十分有用的。尽管SSRS中的Report Manager应用可以导出报表,但是想象一个报表有五个参数,每个参数都要一个或几个值,你需要手动地将所有可能的组合都导出来,然后再将它们在网络中保存为Excel文件。这是个很复杂的过程。

  以上我所展示的代码可以使你开发出一种自动化解决方案,你需要的时候就可以安排执行。其他潜在的用途就是自动报表存档,或强制将报表加载到执行缓存中。

  另一种可能性涉及到在命令提示符中生成报表。SQL Server Reporting Services中包含一个脚本环境,叫做RSS。它允许你从RSS文本文件中调用SOAP API,它还允许你传递需要的参数。

  尽管RSS脚本的初衷是进行报表自动化管理,但是它还可以用来进行报表的绘制。RSS只支持VB.NET,因此下面的代码就是VB.NET的。它告诉你如何为Main() method编写代码,来连接ReportExecution2005终端,将报表以Excel文件方式呈现并保存在本地磁盘上:

  Public Sub Main()
  Dim format as string = "EXCEL"
  Dim fileName as String = "C:tempreportsProduct Line Sales.xls"
  Dim reportPath as String = "/AdventureWorks 2008 Sample Reports/Product Line Sales 2008"
  ' Prepare Render arguments
  Dim historyID as string = Nothing
  Dim deviceInfo as string = Nothing
  Dim extension as string = Nothing
  Dim encoding as string
  Dim mimeType as string
  Dim warnings() AS Warning = Nothing
  Dim streamIDs() as string = Nothing
  Dim results() as Byte
  rs.LoadReport(reportPath, historyID)
  results = rs.Render(format, deviceInfo, extension, _
  mimeType, encoding, warnings, streamIDs)
  ' Open a file stream and write out the report
  Dim stream As FileStream = File.OpenWrite(fileName)
  stream.Write(results, 0, results.Length)
  stream.Close()
  End Sub

  将以上代码粘贴在记事本中并存储为Render Report.rss,你可以在DOS中执行它:

  rs -i "c:tempreportsRender Report.rss" -s "http://servername/ReportServerName" -e Exec2005

  请记住“-e”参数与“Exec2005”值是必需的,否则你将无法连接到管理终端,并会接收到错误信息,因为Render() method是在execution终端。同时还要注意与.NET代码的不同,RSS中的rs变量没有声明,RSS脚本host将自动设置它为一个终端。

翻译

孙瑞
孙瑞

相关推荐