FastReport的报表生成器(无论VCL平台还是.NET平台),跨平台的多语言脚本引擎FastScript,桌面OLAP FastCube,如今都被世界各地的开发者所认可,这些名字被等价于“速度”、“可靠”和“品质”,在美国,欧洲和非洲不同国家均设有办事处。FastReports网站有10种不同语言的介绍,FastReports报表拥有40种语言的本地化的信息。
FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。 阅读报表生成器FastReport .Net用户指南:关于脚本(上)
FastReport.NET官方版下载(qun:585577353)https://www.evget.com/product/1861/download
报告和引擎对象
除了报告中包含的对象外,脚本中还定义了两个变量:报告和引擎。
报告变量指的是当前的报告。在下面的列表中,列出了报告对象的方法:
Method | Description |
---|---|
object Calc(string expression) | 计算表达式并返回值。首次调用此方法时,表达式将被编译,这需要一些时间。 |
object GetColumnValue(string complexName) | 返回数据列的值。列名必须以 "DataSource.Column "形式显示。如果列的值为空,则默认将其转换为一个值(0、空字符串、false)。 |
object GetColumnValueNullable(string complexName) | 返回数据列的值。与前一个方法相反,它不会转换为默认值,也可能为空。 |
Parameter GetParameter(string complexName) | 返回具有指定名称的报告参数。在引用嵌套参数时,名称可以是复合的:"MainParam.NestedParam"。 |
object GetParameterValue(string complexName) | 返回具有指定名称的报告参数的值。 |
void SetParameterValue(string complexName, object value) | 设置指定名称的报告参数值。 |
object GetVariableValue(string complexName) | 返回系统变量的值,例如 "Date"。 |
object GetTotalValue(string name) | 按名称返回 "Data"窗口中定义的总计值。 |
DataSourceBase GetDataSource(string alias) | 按名称返回报表中定义的数据源。 |
引擎对象是一个控制报告创建的引擎。通过使用引擎的方法和属性,可以管理在页面上放置波段的过程。您可以使用引擎对象的以下属性:
Property | Description |
---|---|
float CurX | 当前 X 轴坐标。可以为该属性赋值,以便移动打印对象。 |
float CurY | 当前在 Y 轴上的打印位置。可以为该属性赋值,以移动打印对象。 |
int CurColumn | 多栏报表中当前列的编号。第一列的编号为 0 |
int CurPage | 打印页面的编号。该值可从系统变量 "Page "中获取。 |
float PageWidth | 页面宽度减去左右页边距。 |
float PageHeight | 页面高度减去上下页边距。 |
float PageFooterHeight | 页面页脚(及其所有子带)的高度 |
float ColumnFooterHeight | 栏脚(及其所有子带)的高度。 |
float FreeSpace | 页面可用空间的大小。 |
bool FirstPass | 如果正在执行第一次(或唯一一次)报告传递,则返回 true。可通过 Report.DoublePass 属性获取传递次数。 |
bool FinalPass | 如果正在执行最后一次(或唯一一次)报告传递,则返回 true。 |
在下图中,你可以看到上面列出的一些属性的含义。
Engine.PageWidth 和 Engine.PageHeight 属性决定打印区域的大小,几乎总是小于页面的实际大小。打印区域的大小由页边距决定,页边距由 LeftMargin、TopMargin、RightMargin 和 BottomMargin 页面属性给出。
Engine.FreeSpace 属性决定页面上可用空间的高度。如果页面上有 ""Report footer" "带,则在计算 FreeSpace 时会考虑其高度。请注意,打印页边框后,可用空间会减少。
如何形成准备好的报告页面?
FastReport 引擎在页面上显示条带,直到有足够的空间进行条带输出。当没有可用空间时,将打印 "报告页脚 "条带并形成新的空页。显示条带从当前位置开始,当前位置由 X 和 Y 坐标决定。该位置由 Engine.CurX 和 Engine.CurY 属性重新调整。打印带状图后,CurY 会自动按打印带状图的高度增加。打印多栏报表时,CurX 的位置会发生变化。
Engine.CurX 和 Engine.CurY 属性不仅可用于读取,也可用于写入。这意味着您可以通过使用一个合适的事件来手动移动条带。使用这些属性的示例请参见 "示例 "部分。
引擎对象中定义了以下方法:
Method | Description |
---|---|
void AddOutline(string text) | 在报告大纲中添加元素(请参阅 "交互式报告 "章节),并将当前位置设置为添加的元素。 |
void OutlineRoot() | 设置大纲根部的当前位置。 |
void OutlineUp() | 将当前位置移动到更高层次的大纲元素上。 |
void AddBookmark(string name) | 添加书签(请参阅 "交互式报告 "章节) |
int GetBookmarkPage(string name) | 返回书签所在页码。 |
void StartNewPage() | 开始一个新页面。如果报表是多栏报表,则开始新的一栏。 |
通过使用 AddOutline、OutlineRoot 和 OutlineUp 方法,可以手动创建报告大纲。通常,这都是借助 OutlineExpression 属性自动完成的,每个波段和报表页面都有 OutlineExpression 属性。
AddOutline 方法为当前大纲元素添加一个子元素,并使其成为当前元素。当前的报告页面和页面上的当前位置都与新元素相关联。如果多次调用 AddOutline 方法,就会产生如下结构:
Item1 Item2 Item3
为了控制当前元素,有 OutlineUp 和 OutlineRoot 方法。第一个方法将指针移到位于更高层的元素上。因此,脚本:
Engine.AddOutline("Item1"); Engine.AddOutline("Item2"); Engine.AddOutline("Item3"); Engine.OutlineUp(); Engine.AddOutline("Item4");
将创建以下大纲:
Item1 Item2 Item3 Item4
OutlineRoot 方法会将当前元素移动到大纲的根部。例如,下面的脚本:
Engine.AddOutline("Item1"); Engine.AddOutline("Item2"); Engine.AddOutline("Item3"); Engine.OutlineRoot(); Engine.AddOutline("Item4");
将创建以下大纲:
Item1 Item2 Item3 Item4
引用系统变量
要引用系统变量,请使用报告对象的 GetVariableValue 方法:
DateTime date = (DateTime)Report.GetVariableValue("Date");
在 "Data "窗口中可以看到系统变量列表。您可以将变量拖入脚本中,FastReport 会自动创建用于引用变量的代码。
引用总值
要引用总值,请使用报告对象的 GetTotalValue 方法:
float sales = Report.GetTotalValue("TotalSales");
在 "Data "窗口中可以看到总数列表。从它,你可以拖动到脚本,在此 FastReport 代码自动引用总。
总计值具有 FastReport.Variant 类型。It can be directly in any expression, because the FastReport.Variant type is automatically converted to any type.例如
float tax = Report.GetTotalValue("TotalSales") * 0.2f;
在处理过程中,可以参考总值。通常情况下,总值在打印带子的那一刻就 "ready to use"。
引用报告参数
要引用报告参数,请使用报告对象的 GetParameterValue 方法:
int myParam = (int)Report.GetParameterValue("MyParameter");
参数可以嵌套。在这种情况下,请标出父参数的名称,并在句号后标出子参数的名称:
Report.GetParameterValue("ParentParameter.ChildParameter")
参数有明确的数据类型。它在参数的 DataType 属性中给出。在引用参数时必须考虑到这一点。您可以在"Data"窗口中看到参数列表。您可以将参数拖入脚本,FastReport 会自动创建用于引用参数的代码。
要更改参数值,请使用报告对象的 SetParameterValue 方法:
Report.SetParameterValue("MyParameter", 10);
本次关于 FastReport .Net 介绍就讲解到这里了,点击此处查看关于用户指南的更多内容。