ActiveReport
是
.net
下的一个出色的报表开发程序,虽然和水晶报表相比,名气不那么大,甚至有很多人不知道它的存在,但是并不妨碍它在
.net
报表开发中的出色表现,本文将一步一步地介绍如何使用它和
VS2008
开发
.net
报表。
1.
安装:
你可以从
Data Dynamics
的网站上下载最新的
ActiveReport for .net 3.0
,你可以免费使用,但是在生成的报表最下边有水印,不过不影响报表的整体美观。下载后直接安装就可以了。你也可以找破解包,安装完后会看到开始-程序菜单里的
DataDynamics
的目录,里面包括了,帮助,例子程序等。
2.
第一个
Web
表程序。
在安装完成后,启动
VS2008
,会看到启动界面上有
ActiveReport
的图标,进入后新建一个工程,并且给工程添加新文件,在文件类型中就可以看到
ActiveReport
文件的图标。给报表文件命名为
ActiveReport1
,确定后会弹出一个提示:你正在添加一个特殊格式的文件,要在网站中使用此类型,需将其放到app_code文件夹中,是否将其放入App_Code中,点击确定,则在App_Code看到有一个
ActiveReport1.cs
文件,这个就是报表文件了。
打开文件,就是报表的CS文件,在此注明,大家不要被此文件给愚弄了,说实话我在此迷惑不解了好久,一直在找它的设计文件,但是一直无果,所以一直费劲的在敲代码来布局,但在一个偶然的机会,才发现右键,视图设计器,就可以打开设计页面,当时我气的差点吐血,我可是重装了N次呀,这才是众里寻它千百度,蓦然回首那人却在灯火阑珊处,而前人没有一个人提到,为了大家少走弯路,所以在此强调一下。下面我们接着言归正传,在设计页面可以看到三部分,
PageHeader
(表头),
Detail
(明细),
PageFooter
(表尾)。打开工具箱,给
Detail
部分随便添加一个
Label
。
下面就要显示这个报表了,在工程中添加一个web窗体,在窗体上写上以
<object id="arv" codebase="arview2.cab#version=-1,-1,-1,-1" height="100%" width="100%" classid="clsid:8569D715-FF88-44BA-8D1D-AD3E59543DDE" viewastext>
<param name="_ExtentX" value="26141">
<param name="_ExtentY" value="11959">
</object>
<param name="_ExtentX" value="26141">
<param name="_ExtentY" value="11959">
</object>
在
窗体上还要
写以下代码:此处是一个再次load事件,应该是内部调用使用的。
<script language="vbscript">
<!--
sub arv_ControlLoaded()
arv.DataPath = "ActiveXViewer.aspx?ReturnReport=1"
end sub
-->
</script>
sub arv_ControlLoaded()
arv.DataPath = "ActiveXViewer.aspx?ReturnReport=1"
end sub
-->
</script>
我们在.cs文件中写入
string sReturnReport = this.Page.Request.QueryString["ReturnReport"];
if ( (sReturnReport != null) && (sReturnReport.Trim().Length != 0) )
{
this.Page.Response.Buffer = true;
ActiveReport3 rpt = null;
{
this.Page.Response.Buffer = true;
ActiveReport3 rpt = null;
try
{
{
//这两句话是重点
rpt = new ProductReport(myArray);
rpt.Run(false);
}
catch (DataDynamics.ActiveReports.ReportException eRunReport)
{
this.Trace.Warn("Report failed to run:\n" + eRunReport.ToString());
}
rpt = new ProductReport(myArray);
rpt.Run(false);
}
catch (DataDynamics.ActiveReports.ReportException eRunReport)
{
this.Trace.Warn("Report failed to run:\n" + eRunReport.ToString());
}
MemoryStream outStream = new MemoryStream();
rpt.Document.Save(outStream, DataDynamics.ActiveReports.Document.RdfFormat.AR20);
rpt.Document.Save(outStream, DataDynamics.ActiveReports.Document.RdfFormat.AR20);
outStream.Seek(0, SeekOrigin.Begin);
byte[] bytes = new byte[outStream.Length];
outStream.Read(bytes, 0, (int)outStream.Length);
outStream.Read(bytes, 0, (int)outStream.Length);
this.Page.Response.ClearContent();
this.Page.Response.ClearHeaders();
this.Page.Response.ClearHeaders();
this.Page.Response.BinaryWrite(bytes);
this.Page.Response.End();
}
this.Page.Response.End();
}
然后
运行,就可以看到在
Viewer
控件中显示报表了
。
3.
还要注意的是,在
web
方式下,需要在
web.config
文件中添加下面这段:
<
httpHandlers
>
<
add
verb
=
"*"path="*.rpx"type="DataDynamics.ActiveReports.Web.Handlers.RpxHandler, ActiveReports.Web, Version=4.2.1.1238, Culture=neutral, PublicKeyToken=cc4967777c49a3ff"/>
<
add
verb
=
"*"path="*.ActiveReport"type="DataDynamics.ActiveReports.Web.Handlers.CompiledReportHandler, ActiveReports.Web, Version=4.2.1.1238, Culture=neutral, PublicKeyToken=cc4967777c49a3ff"/>
<
add
verb
=
"*"path="*.ArCacheItem"type="DataDynamics.ActiveReports.Web.Handlers.WebCacheAccessHandler, ActiveReports.Web, Version=4.2.1.1238, Culture=neutral, PublicKeyToken=cc4967777c49a3ff"/>
</
httpHandlers
>