找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman

社区贡献组

270

主题

1万

帖子

1万

积分

社区贡献组

积分
19311

活字格认证微信认证勋章元老葡萄

iceman
社区贡献组   /  发表于:2012-11-2 10:06  /   查看:5103  /  回复:0
我们之前发布过一些文章讨论 ActiveReport 在 Silverlight 工程中的使用方法。我们知道使用 SilverLight Viewer 可以在 Silverlight 工程中浏览报表文件。但是实现其他 feature 对我们来说是一个值得讨论的话题。导出报表文件到 PDF, Excel, HTML, TIFF, Text 就是其中之一。
关于怎样在 Silverlight 工程中浏览报表,请参考以下步骤:
关于怎样在 Silverlight 工程中浏览报表,请参考以下步骤:
1.        在 web Application 中创建报表(Rpx 或 Code based 模板)。
2.        在 Silverlight 工程中使用 AR Silverlight Viewer 加载报表。
关于加载报表到Silverlight Viewer 中的方法可以参考帮助文档“To bind a report to the ActiveReports Silverlight Viewer”章节。现在在Silverlight Viewer 中已经呈现出了我们的报表。我们通常会导出报表到PDF, Excel, and HTML 等格式文件。现在问题出现了,我们没有提供在 Silverlight 程序中导出文件的接口。现有导出文件接口只在 Web 和 WinForm 工程中适用。即使我们可以在 Silverlight 工程中和文件的 document 交互。我们也无法导出报表。下面是导出方法:
1.        我们通过 字节流的方式从 server 端传递报表到 Silverlight 工程中。下面是加载报表代码:
Silverlight 端:
  1. private void LoadReport_Click(object sender, RoutedEventArgs e)  
  2. {
  3.   this.viewer1.ViewModel.ReportPath ="../SampleReport.aspx?OutPutFormat=None";  
  4. }
复制代码


Server 端代码如下:
  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.   MySampleReport Report = new MySampleReport();  
  4.   if (Request.QueryString["OutPutFormat"] == "None")  
  5.   {  
  6.     CrossTab.Run();  
  7.     System.IO.MemoryStream ms = new System.IO.MemoryStream();  
  8.     CrossTab.Document.Save(ms);  
  9.     Response.BinaryWrite(ms.ToArray());  
  10.     Response.End();  
  11.   }  
  12. }  
复制代码

2.        现在报表已经加载到了Silverlight Viewer 中,接下来我们添加 Button 到silverlight viewer 中,在 button 的click 事件中使用以下代码导航到 Server 端页面。代码如下:

  1.         protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.           MySampleReport Report = new MySampleReport();  
  4.           if (Request.QueryString["OutPutFormat"] == "None")  
  5.           {  
  6.             Report.Run();  
  7.             System.IO.MemoryStream ms = new System.IO.MemoryStream();  
  8.             Report.Document.Save(ms);  
  9.             Response.BinaryWrite(ms.ToArray());  
  10.             Response.End();  
  11.           }  
  12.         }  
复制代码

3.        在我们调用的页面中需要实现导出报表的功能,通过传递的 QueryString 来判断报表导出类型。代码如下:
  1.         if (Request.QueryString["OutPutFormat"] == "PDF")  
  2.         {  
  3.           System.IO.MemoryStream m_stream = new System.IO.MemoryStream();  
  4.           Report.Run();  
  5.           pdfExport1.Export(Report.Document, m_stream);  
  6.           m_stream.Position = 0;  
  7.           Response.ContentType = "application/pdf";  
  8.           Response.AddHeader("content-disposition", "inline;filename=ReportExport.pdf");  
  9.           Response.BinaryWrite(m_stream.ToArray());  
  10.           Response.End();  
  11.         }  
复制代码

截图:


示例代码:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册
返回顶部