!MISSING PHRASE 'Show All'! !MISSING PHRASE 'Hide All'!
请注意,ComponentOne软件工具附带各种示例工程以及/或者Demo,可能还同时使用了ComponentOne Studio套件所包含的其他开发工具。 报表示例
点击下面的链接查看报表示例列表:
Visual Basic 示例示例
示例 | 描述 |
Chart | 使用C1Report以及C1Chart向报表添加图表。 |
CreateReport | 通过代码动态地创建报表。此示例使用 |
CustomData | 创建C1Report使用的自定义数据源。此示例使用C1Report以及C1PrintPreview组件。 |
Embedded | 在设计时向C1Report组件加载报表定义。此示例使用C1Report以及 |
HtmlFields | 呈现报表为HTML,以HTML格式保存报表。 |
Newsletter | 创建不使用数据源的报表(非绑定报表)。此示例使用C1Report以及 |
NorthWind | 看从NorthWind数据库导入的报表。此示例使用C1Report组件。 |
C# 示例示例
示例 | 描述 |
AddScriptObject | 向 C1Report 的脚本引擎添加自定义对象。 |
AdHocSorting | 在呈现报表之前选择排序条件。 |
ADOReport | 使用 ADODB.Recordset 对象作为 C1Report 的数据源。 |
Chart | 使用C1Report以及C1Chart向报表添加图表。此示例使用C1Report 以及C1Chart组件。 |
CreateReport | 通过代码动态地创建报表。此示例使用C1Report组件。 |
CustomFields | 创建可以添加到任何报表的自定义的图表以及Gradient字段。 |
CustomHyperlinks | 超链接被单击时执行自定义操作。 |
CustomPaperSize | 使用自定义纸张大小创建报表。此示例使用C1Report 以及 C1PrintPreview 组件。 |
DynamicFormat | 使用脚本属性基于报表的内容格式化报表。本示例使用C1Report控件。 |
示例 | 描述 |
通过电子邮件发送报表。 | |
ExportXml | 将报表导出为XML格式。 |
FlexReport | 使用C1FlexGrid控件作为您报表的数据源。 |
HierReport | 基于分级数据创建报表。此示例使用C1Report组件。 |
HtmlFields | 呈现报表为HTML,以HTML格式保存报表。 |
Images | 在报表中使用两种方法加载图像。 |
MixedOrientation | 呈现两个C1Report(一个为纵向,一个为横向)至一个PDF文档。 |
PageCountGroup | 让报表中每一个分组使用独立的页面编码。 |
ParameterizedFilter | 创建带有一个参数化筛选器的报表。 |
ParseParameters | 解析RecordSource字符串中的一个PARAMETERS表达式。此示例使用C1Report控件。 |
ProgressIndicator | 在呈现报表的过程中显示进度指示器。 |
ReportBrowser | 打开报表定义文件并列出其内容。此示例使用C1Report控件。 |
ReportBuilder | 基于DataTable自动创建报表定义。 |
ReportDictionary | 添加一个自定义的查字典对象至C1Report的脚本引擎。 |
RTFReport | 演示如何在报表中绘制RTF字段。此示例使用C1Report组件。 |
SubReportDataSource | 使用自定义数据源的子报表。此示例使用C1Report组件。 |
XMLData | 使用XML文档作为报表的数据源。此示例使用C1Report控件。 |
ZipReport | 压缩并加密报表定义文件。此示例使用C1Report 以及C1Zip 组件。 |
XML 示例示例
示例 | 描述 |
CommonTasks | 一组报表的集合,用来展示如何执行常见任务。 |
SampleReports | XML报表定义文件,展示C1Report的功能。 |
C1ReportDesigner 示例示例
示例 | 描述 |
SimpleDesigner | Uses the C1ReportDesigner control to implement a simple report designer. |
打印和预览示例
点击下面的链接查看报表示例列表:
Visual Basic and C# 示例示例
Sample | 描述 |
AutoSizeTable | 本示例展示如何基于其内容调整表格列的宽度。本示例提供了一个 |
CoordinatesOfCharsInText | 展示如何使用GetCharRect()方法(高级)。 |
DataBinding | 此示例演示绑定到一个简单的列表(包括绑定到一个空列表),绑定MS Access 数据库,并使用分组,聚合函数,以及绑定表行/列分组。此示例要求2006 V3版本(C1Preview.2 2.0.20063.41002)或更高版本。 |
Hyperlinks | 演示如何创建各种类型的超链接 |
ObjectCoordinates | 该示例显示了如何将预览面板的坐标系和正在预览的C1PrintDocument关联在一 |
PageLayout1 | 展示如何使用PageLayouts 属性。 |
PageLayout2 | 显示如何使用RenderObject的LayoutChangeBefore属性。该示例创建一个文 |
RenderObjects | 介绍了C1PrintDocument提供的大多数的RenderObject类型。该示例创建和预览一个C1PrintDocument,其中包含大部分的由C1PrintDocument提供的 |
RenderTOC | 显示如何使用RenderToc对象。 |
RotatedText | 示例显示了如何向C1PrintDocument.Text插入一段旋转文本,旋转不同的角度显示。 |
Stacking | 显示如何使用Stack规则用作render对象定位 |
Tables1 | 演示如何创建表格,设置表格页眉和页脚。 |
Sample | 描述 |
| 该示例创建并预览一个包含表格的C1PrintDocument。演示如何设置表格的页眉(包括running header)和页脚。显示如何添加orphan(在指定页脚之前,在同一行打印段落的最小行数)。 |
Tables2 | 该示例显示在C1PrintDocument中表格的基本功能。将演示以下表格的功能: |
Tables3 | 展示在C1PrintDocument 表格中,样式的多重继承。 |
TabPosition | 展示如何使用文本类render对象的TabPosition属性。该示例创建一个具有 |
VisibleRowsCols | 演示表格的行/列的Visible属性。 |
WideTables | 演示如何创建跨越多个页面的宽表 |
WrapperDoc | 该示例为新的C1PrintDocument提供了一些简单的Wrapper方法的源代码,用来实现来自于"经典版"(旧版)C1PrintDocument的RenderBlock/Measure的一些 |
ZeroWidthRowsCols | 演示如何处理零宽表格列。 |
WinForms基于任务报表的帮助
任务帮助文档假设你已经熟悉.NET环境下编程,并且了解报表的基础知识以及知道一般情况下如何使用控制器。按照帮
助文档中的步骤,你可以创建包含一整套WinForms报表功能的项目,并且对如何使用WinForms报表有更加深入的理解。
报表帮助文档
任务帮助文档假设你已经熟悉.NET环境下编程,并且了解报表的基础知识以及知道一般情况下如何使用控制器。按照帮
助文档中的步骤,你可以创建包含一整套C1Report报表功能的项目,并且对如何使用C1Report报表有更加深入的理解。
注意:你需要在项目中引用以下命名空间:
C1.C1Report
CommonTasks.xml
本章节中大部分专题都以预创建报表为例来进行说明。预创建报表保存在CommonTasks.xml报表模板文件中,前提是你已经安装了the Studio for WinForms samples。你可以在文档或者我的文档下的ComponentOne Samples\Studio for
WinForms\ C1Report\ C1Report\XML\ CommonTasks目录中查看该文件。
添加图片到报表
你可以使用C1ReportDesigner添加非绑定或者绑定图片,并且添加图片水印创建非绑定图片
非绑定图片是一种静态图片,例如logo图片,水印图片这类不需要保存在数据库中的图片。完成以下步骤,添加非绑定图片到你的报表中:
- 打开C1ReportDesigner。
- 创建一个新报表或者打开已有报表,当你在C1ReportDesigner中打开报表之后,你就可以对其进行修改。
- 单击Design按钮,开始编辑报表。
- 在设计模式下,单击Add Unbound Picture按钮 ,该按钮位于Design选项卡中的Fields分组中。
弹出Open对话框。
- 选择想要在报表中包含的图片文件,并单击OK按钮。
- 在报表中单击选择你希望添加图片的位置,然后调整图片框大小来显示图片。
下图显示图片已经添加到报表中,正在调整图片大小的效果:
需要注意的是,图片文件可以被嵌入到报表模板中,也可以作为一个外部文件被引用。选择你需要的方式,在
Designer中选择Application按钮,在出现的菜单中选择Options选项。C1ReportDesigner Options对话框将会弹出,你可以在该对话框中选择Embed images into Xml when saving选项:
注意注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"03: Unbound Images"章节,该文件保存在ComponentOne Samples文件目录下。 |
创建绑定图片
!MISSING PHRASE 'Show All'!
!MISSING PHRASE 'Hide All'!
绑定图片是一种保存在数据库字段中的图片类型。想要在报表中显示这些图片,你需要在报表中新增一个字段,然后设置字段的Picture属性,将图片存储路径添加到名称列中。
使用C1ReportDesigner添加绑定图片到报表中:
- 在C1ReportDesigner的设计模式下,单击Add Bound Picture按钮 ,该按钮位于Design选项卡中的Fields分组。
这里将显示一个菜单,其中包括数据源中所有的二进制字段。
- 选择你想要加入报表中的字段。
使用代码添加绑定图片到报表中:
如果数据库中的"Photo"字段包含内嵌的OLE对象或者原始图像流,并且报表中存在"fEmployeePhoto"字段。这种情况下,使用下述代码将会在字段中显示内嵌的照片。
Visual Basic
Visual Basic |
|
fEmployeePhoto.Picture = "Photo"
C#
C# |
fEmployeePhoto.Picture = "Photo"; |
注意注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"04:Bound Images"章节,该文件保存在ComponentOne Samples文件目录下。 |
创建水印
水印是一种显示在报表内容下的图片类型。这种图像通常会变浅,以防止它们干扰实际的报表内容。
想要显示水印图片你需要设置图片包含文件中Picture属性。你还可以使用 PictureAlign和PictureShow属性控制水印的缩放比例和它是否应该出现。
注意:注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"05: Watermark"章节,该文件保存在ComponentOne Samples文件目录下。 |
创建报表字段
当报表模板加载到组件中并且完成数据源定义之后,你可以新增和编辑报表字段。你可以很简单的使用
C1ReportDesigner下的Design选项卡中的Fields分组来实现该功能。
想要在报表中新增一个字段,你需要完成以下步骤:
在报表中拖拽鼠标直到光标变成十字 。单击然后通过拖拽定义新字段所占的矩形位置。然后松开按钮创建新字段。
如果你改变主意,单击ESC键或者单击Undo按钮取消操作。
注意: C1Report 仅有一种Field对象。你可以通过设置Field对象的属性来使其在某一指定方式下显示和工作。
或者
你也可以通过复制、粘贴已有的字段来创建新字段。或者按住CTRL键,然后拖拽一个字段或者字段组到新位置来创建一个副本。
创建图表
在最初版本的C1Report,中,在报表中添加图表需要使用 StartSection 事件生成图表,然后将图表图片在字段的Picture属性中进行设置。这样并不难,而且还是动态添加图片到报表中最灵活的方式。
然而,这种方式有两个缺点:
需要在报表模板外部编写代码实现,这意味着只有你的应用才能够按照预计的方式显示报表。
需要编写代码生成报表,这一过程非常冗长乏味。当前版本的C1Report支持自定义报表字段,包括基于C1Chart控制器的图表字段。想要添加一个图表区域到报表分组的页眉区域,你需要完成以下步骤:
- 打开C1ReportDesigner。
- 创建一个新报表或者打开已有报表,当你在C1ReportDesigner中打开报表之后,你就可以对其进行修改。
- 单击Design按钮,开始编辑报表。
- 在Design选项卡中的Fields分组中,单击Add Chart Field按钮 。
- 单击报表的分组页眉区域,拖动区域使其适应报表。
- 在属性窗口中,将图表区域的ChartDataX和ChartDataY属性值设置为你想在报表中展示的数值。你可以通过将 ChartDataY属性设置为一个通过分号间隔的字段列表(例如"UnitsInStock;ReorderLevel"),从而显示一系列的数值。
图表数据会自动根据当前报表分组进行调整。例如,当呈现"Beverages"区域时,只有该分类中的数据会参与绘图。你可以使用很多其他属性来定制图表,例如Chart.ChartType,Chart.GridLines,Chart.Use3D以及Chart.Palette等属性。
注意注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"11: Charts"章节,该文件保存在ComponentOne Samples文件目录下。 |
创建自定义字段
你可以创建自定义字段,并将他们添加到ReportDesigner的调色板中。完成以下步骤,实现该过程:
- 创建一个自定义字段类,该类来自C1.Win.C1Report.Field。
- 在Report Designer的设置文件中登记你的自定义字段。
下面将介绍图表和渐变字段是如何实现的。这些自定义字段的源代码是可用的,你可以在创建自定义字段时使用它们作为起始点。图表和渐变字段在C1ReportDesigner的设置文件中使用如下代码进行注册:
<customfields>
<item value="C1.Win.C1Report.CustomFields;C1.Win.C1Report.CustomFields.Chart" /> <item value="C1.Win.C1Report.CustomFields;C1.Win.C1Report.CustomFields.Gradient" />
</customfields>
例如,想要在Design调色板中增加一个新字段,需要在"C1ReportDesigner.2.exe.settings" 文件中的 <customfields>区域增加你的控制器:
<customfields>
<item value="C1.Win.C1Report.CustomFields.2;C1.Win.C1Report.CustomFields.Chart" />
<item value="C1.Win.C1Report.CustomFields.2;C1.Win.C1Report.CustomFields.Gradient" />
<!-- 在设计器中添加一个新的字段 -->
<item value="MyCustomFieldAssembly;MyCustomFieldAssembly.MyField" />
</customfields>
这里假设你的字段叫做"MyField",你可以在"MyCustomFieldAssembly"集合中找到它。
注意注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"12: Custom Fields"章节,该文件保存在ComponentOne Samples文件目录下。 |
定制页面标题
本部分将介绍如何定制页面标题的行为。
在页面分页处标题中增加连续标签
如果页眉的Repeat属性设置为True,分组页眉在页面分页时将会不断重复。这使报表更容易阅读,但就变得很难使用标题分辨出这是一个新分组页面或者是一个连续页面。
一种解决方式是增加一个名为"Continued"标签字段,fContinued,例如添加到分组页眉,通过脚本控制它的可见性。完成以下步骤,实现该功能:
- 打开C1ReportDesigner。
- 创建一个报表或者打开已有报表,在C1ReprotDesigner中打开报表之后,你就可以修改它了。
- 单击Close Print Preview按钮,开始编辑报表。
- 在设计模式下,从属性窗口上方的下拉列表中选择Detail选项。
- 找到Detail.OnPrint属性,单击旁边空白字段,然后单击ellipsis按钮。
- 在弹出的VBScript编辑器中,输入下述VB表达式:
' VBScript: Detail.OnPrint fContinued.Visible = true
- 在属性窗口上方的下拉列表中选择GroupFooter选项。
- 找到GroupFooter.OnPrint属性,单击旁边空白字段,然后单击ellipsis按钮。
- 在弹出的VBScript编辑器中,输入下述VB表达式:
' VBScript: GroupFooter.OnPrint fContinued.Visible= false
如果fContinued字段初始化为不可见,脚本只会在连续页面的页眉中显示该标签。脚本确认fContinued字段在分组中是可见的。任何在分组页脚之后,下一个详细区域之前创建的页面分割,都不会显示该标签。
注意:注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"18: Continued Headers"章节,该文件保存在ComponentOne Samples文件目录下。
动态改变页面页眉
你可以使用C1Report的PageHeader 和PageFooter属性来指定页面页眉还是页面页脚区域是否显示在所有页面,或者限制页面是否包含在报表页眉和页脚区域。
某些情况下,你想要进一步定制这种行为。例如,你想要在奇数页面和偶数页面呈现不同的页眉。可以使用脚本根据页面被呈现的情况选择显示或者隐藏字段。完成以下步骤实现该功能:
- 打开C1ReportDesigner。
- 创建一个报表或者打开已有报表,在C1ReprotDesigner中打开报表之后,你就可以修改它了。
- 单击Close Print Preview按钮,开始编辑报表。
- 在设计模式下,从属性窗口上方的下拉列表中选择Detail选项。
- 找到OnFormat属性,单击旁边空白字段,然后单击ellipsis按钮。
- 在弹出的VBScript编辑器中,输入下述VB表达式:
odd = (page mod 2 <> 0) h1odd.Visible = odd h2odd.Visible = odd h1even.Visible = not odd h2even.Visible = not odd
如果报表页眉包含"h<x>odd"和"h<x>even"字段,该脚本将根据页面是奇数还是偶数选择显示或者隐藏字段。
需要注意的是,为了安置页面页眉显示空白区域,所有的字段的CanShrink属性都需要设置为True。
注意:注意:完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"09: Dynamic Page Header"章节,该文件保存在ComponentOne Samples文件目录下。 |
自定义页面布局
下面将介绍如何定制报表的布局。
控制页面分页
缺省情况下,C1Report将在每个页面底部插入一个分页符,然后继续呈现下一个页面。你使用下述几个属性可以重载这一行为:
• Group.KeepTogether::该属性决定分组页眉是否在页面中呈现,如果它们必须在至少一个Detail区域呈现,或是全部的分组应该显示在同一个页面。
Section.KeepTogether::决定是否允许页面分页。该属性优先级低于Group.KeepTogether。
ForcePageBreak::允许你指定页面分页应该插入在分组之前或者之后,还是区域之前或者之后。
Field.KeepTogether:决定字段是否允许页面分页。该属性允许长文本字段横跨多个页面。它的优先级低于
Section.KeepTogether:。
ForcePageBreak:允许你指定页面分页应该插入在分组之前或者之后,还是字段之前或者之后。
你可以通过C1ReprotDesigner的属性表格设置这些属性。
你可以在报表呈现过程中使用脚本改变这些属性。例如,每个10个Detail区域执行一次页面分页,完成以下步骤实现该功能:
- 打开C1ReportDesigner,想要了解C1ReprotDesigner更多信息,请参阅Accessing C1ReportDesignerfrom
VisualStudio。
- 创建一个报表或者打开已有报表,在C1ReprotDesigner中打开报表之后,你就可以修改它了。
- 单击Close Print Preview按钮,开始编辑报表。
- 在设计模式下,从属性窗口上方的下拉列表中选择Detail选项。
- 找到Detail.OnPrint 属性,单击旁边空白字段,然后单击省略号按钮。
- 在弹出的VBScript编辑器中,输入下述VB表达式:
cnt = cnt + 1 detail.forcepagebreak = "none" if cnt >= 10 then cnt = 0 detail.forcepagebreak = "after" endif
注意:注意: 完整的报表,可参阅在报表模板文件下CommonTasks.xml报表模板文件的"07: Force Page Breaks"章节,该文件保存在ComponentOne Samples文件目录下。 |