zoukankan      html  css  js  c++  java
  • ActiveReport使用心得(四):WebForm下的显示类型及数据的导出(轉)

       这次我来说说WebForm下报表的显示类型及数据的导出.
       ActiveReport报表查看器在有4种显示方式,我们选中报表查看器控件,找到其ViewType属性,就可以看到其包含的几种显示方式.如图:

       简单说明一下这几种查看方式的的区别:HtmlViewer方式,为在转化为html的查看的方式,报表上方带工具条;RawHtml方式,同样是转化为html查看的方式,与HtmlViewer方式的区别是报表上方不带工具条;ActivexViewer方式为以Activex插件的方式查看,基本上等同于window程序中的报表样式;AcrobatReader方式,则以pdf文件的形式查看报表.
       需要说明的是,当以ActivexViewer方式查看时,要求用户的客户端下载相应的ActiveX插件,同时在服务器端要提供插件的安装包文件.插件的安装包文件名为arview2.cab,这个安装包文件可以在安装完ActiveReport后软件自带的Web示例项目中找到,如果你安装ActiveReport时选的是默认安装,则可以到这个目录下找到arview2.cab文件:C:\Inetpub\wwwroot\Data Dynamics\ActiveReports for .NET 3.0\Samples\VS2005\CSharp\ArWebSampleStdCs3,把这个安装包文件加入到你的项目中,如果你的显示报表的web页面和arview2.cab文件不在同一目录下,则要设置一下报表查看器控件的codebase属性.比如在我的项目中arview2.cab文件放在了网站项目的根目录,而显示报表的web页面在二级目录,则我的报表查看器的codebase属性如下图设置就好了:

       如果想以AcrobatReader方式查看,则要求用户的机器上安装有pdf阅读器(比如AcrobatReader),所以如果你想默认以这种方式显示报表给用户,建议你提醒用户安装pdf阅读器,最好在本页提供下载的链接.
       如果仅仅是能显示报表,那ActiveReport也就没有什么值得使用的了.因为我们通过webform页面,通过自己的设计也能作出类似的报表.所以数据导出的功能是几乎所有报表控件都提供的,ActiveReport也不例外.它共提供了6种导出方式:可以导出为html,text,pdf,rtf,tiff,xls格式的文件.由于我这次的项目中仅要求导出为pdf和excel文件,所以就简单说说如何导出为这两种文件,另外几种文件的导出方式大同小异,大家可以自己试验一下.
       最开始看网上的文章说想导出这几种文件时,先要把对应的几个导出控件添加到工具箱上.我试了一下,在winform上可以添加到工具箱上,在webform下是不能将那几种导出控件添加到工具箱上的.正确的做法是在你的网站项目中添加引用,在添加引用对话框中可以找到如下图的相关程序集:

    当我们想导出为pdf文件时,只要选中上图中的组件,点确定就可以添加引用了.如果想导出为另几种文件格式,添加对应的组件引用就可以了.
    添加完引用后还需要在你的代码文件的顶部引入相应的命名空间.比如我这里要导出为pdf和excel两种文件格式,则引入如下命名空间:

    using DataDynamics.ActiveReports.Export.Xls;
    using DataDynamics.ActiveReports.Export.Pdf;

    如果你想导出为其他的格式,别忘了引入对应的命名空间哦.
    下边就是最关键的数据导出代码了:

    //导出为pdf文件           
    System.IO.MemoryStream m_stream = new System.IO.MemoryStream();
    AdverReport rpt = new AdverReport();  
    int nADCount = 0;
    rpt.DataSource = ADS.GetAdve_ADS_List((int)Session[CoFunction.SESSION_ADVER], ref nADCount);
    rpt.Run();
    PdfExport pdfExport1 = new PdfExport();            
    pdfExport1.Export(rpt.Document, m_stream);
    m_stream.Position = 0;
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment; filename=MyExport.pdf");
    Response.BinaryWrite(m_stream.ToArray());
    Response.End();

    简单说明一下:第一行,我们创建一个内存流,第二行声明一个报表文件类的对象,然后指定报表的数据源,接着就是声明一个PdfExport类的对象,然后就是导出的代码了,应该不难理解吧?
    导出为excel的代码类似:

    //导出为excel文件
                System.IO.MemoryStream m_stream = new System.IO.MemoryStream();
                AdverReport rpt = new AdverReport();
                rpt.CompanyName = ViewState["CompanyName"].ToString();     
    int nADCount = 0;
                rpt.DataSource = ADS.GetAdve_ADS_List((int)Session[CoFunction.SESSION_ADVER], ref nADCount);
                rpt.Run();                                    
                XlsExport xlsExport1 = new XlsExport();
                xlsExport1.MinColumnWidth = (float)0.5;
                xlsExport1.Export(rpt.Document, m_stream);
                m_stream.Position = 0;
                Response.ContentType = "application/vnd.ms-excel";
                Response.AddHeader("content-disposition", "attachment; filename=MyExport.xls");
                Response.BinaryWrite(m_stream.ToArray());
                Response.End();

    没什么好说的了,另外几种格式文件的导出应该也差不多,自己试试吧:)

  • 相关阅读:
    iOS 色值 转换 干货
    控制器view及UIApplication的生命周期
    runtime认识及其用处
    block底层实现原理
    iOS开发,你不得不知的数据存储---干货
    UIImageView(UIImage)的那些细节
    UIButton那些应用细节
    使用gevent写异步代码
    数据分析三剑客之pandas
    数据分析之numpy
  • 原文地址:https://www.cnblogs.com/conghuip/p/1693782.html
Copyright © 2011-2022 走看看