博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActiveReport使用心得(四):WebForm下的显示类型及数据的导出
阅读量:4320 次
发布时间:2019-06-06

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

   这次我来说说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();

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

 下一次,我想说说子报表的问题.

 

转载于:https://www.cnblogs.com/longer/archive/2007/11/30/978606.html

你可能感兴趣的文章
shell解析xml文件
查看>>
十二. k8s--网络策略flannel与canal学习笔记
查看>>
十三. k8s--调度器
查看>>
十四. k8s资源需求和限制, 以及pod驱逐策略
查看>>
三. k8s基本操作以及pod存活以及可用性验证钩子
查看>>
五. k8s--service学习笔记
查看>>
二. k8s安装过程
查看>>
jenkins pipeline 使用遇到的问题
查看>>
四. k8s--pod控制器
查看>>
一. python数据结构与算法
查看>>
django模型内部类meta解释
查看>>
v-for(:key)绑定index、id、key的区别
查看>>
el-tree文本内容过多显示不完全问题(解决)
查看>>
el-table翻页序号不从1开始(已解决)
查看>>
vue-cil 打包爬坑(解决)
查看>>
定位问题 vue+element-ui+easyui(兼容性)
查看>>
四叶草(css)
查看>>
nginx——前端服务环境
查看>>
vue+element-ui 字体自适应不同屏幕
查看>>
Vue 循环为选中的li列表添加效果
查看>>