AR6 Silverlight 工程中导出报表文件

我们之前发布过一些文章讨论 ActiveReport 在 Silverlight 工程中的使用方法。我们知道使用 SilverLight Viewer 可以在 Silverlight 工程中浏览报表文件。但是实现其他 feature 对我们来说是一个值得讨论的话题。导出报表文件到 PDF, Excel, HTML, TIFF, Text 就是其中之一。关于怎样在 Silverlight 工程中浏览报表,请参考以下步骤:

发布于 2012/11/15 00:00

ActiveReports

我们之前发布过一些文章讨论 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 端:

 
private void LoadReport_Click(object sender, RoutedEventArgs e)  
{
  this.viewer1.ViewModel.ReportPath ="../SampleReport.aspx?OutPutFormat=None";  
}
复制代码

Server 端代码如下:

 
protected void Page_Load(object sender, EventArgs e)  
{  
  MySampleReport Report = new MySampleReport();  
  if (Request.QueryString["OutPutFormat"] == "None")  
  {  
    CrossTab.Run();  
    System.IO.MemoryStream ms = new System.IO.MemoryStream();  
    CrossTab.Document.Save(ms);  
    Response.BinaryWrite(ms.ToArray());  
    Response.End();  
  }  
}  
复制代码

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

 
protected void Page_Load(object sender, EventArgs e)  
    {  
      MySampleReport Report = new MySampleReport();  
      if (Request.QueryString["OutPutFormat"] == "None")  
      {  
        Report.Run();  
        System.IO.MemoryStream ms = new System.IO.MemoryStream();  
        Report.Document.Save(ms);  
        Response.BinaryWrite(ms.ToArray());  
        Response.End();  
      }  
    }  
复制代码

3.    在我们调用的页面中需要实现导出报表的功能,通过传递的 QueryString 来判断报表导出类型。代码如下:

 
if (Request.QueryString["OutPutFormat"] == "PDF")  
    {  
      System.IO.MemoryStream m_stream = new System.IO.MemoryStream();  
      Report.Run();  
      pdfExport1.Export(Report.Document, m_stream);  
      m_stream.Position = 0;  
      Response.ContentType = "application/pdf";  
      Response.AddHeader("content-disposition", "inline;filename=ReportExport.pdf");  
      Response.BinaryWrite(m_stream.ToArray());  
      Response.End();  
    }  
复制代码

截图:


示例代码:

ActiveReports 报表控件| 下载试用

ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具为全球超过 300,000 开发人员提供了全面的报表开发服务。

您对ActiveReports产品的任何技术问题,都有技术支持工程师提供1对1专业解答,点击此处即可发帖提问>>技术支持论坛

相关产品
推荐相关案例
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态