打印自定义报表
DXPrinting Library提供了一种创建自定义打印报表的简单方法,这种方法是基于称为打印链接的特殊打印程序。DXPrinting Library引入了几种类型的 printing links,每种链接都是为呈现特定的数据对象、创建报表以及导出和打印报表而设计的,可以通过从LinkBase抽象类继承您的类来创建自定义打印链接。
下表列出了内置的打印链接类型。
打印链接 | 描述 |
---|---|
SimpleLink | 呈现包含线性数据的数据对象。 |
CollectionViewLink | 呈现包含分层数据的数据对象,并实现ICollectionView 接口。 |
PrintableControlLink | DevExpress呈现控件。 |
创建简单链接
简单的打印链接通常用于在报表中显示非分层数据,在不需要将数据项分成组的情况下使用这种链接。
创建后,必须为简单链接提供数据。要做到这一点,通过SimpleLink.DetailCount属性指定数据项的数量,并处理SimpleLink.CreateDetail事件,每次需要新的数据项时都会引发该事件,并根据SimpleLink.DetailCount属性指定的次数引发该事件,在处理程序中,将新的数据项分配给CreateAreaEventArgs.Data事件参数的属性,所需数据项的索引可以使用CreateAreaEventArgs.DetailIndex属性获得。
除了数据项之外,还必须指定可视化表示。要做到这一点,创建一个 ,它应该应用于每个数据项,然后将其分配给链接的SimpleLink.DetailTemplate属性。
创建集合视图链接
当您需要在报表中显示来自分层数据源的数据,或者当数据项应该分成几个组显示时,集合视图打印链接非常有用。
要将数据分配给集合视图链接,需要创建一个实现ICollectionView接口的对象,它可以是System.Windows.Data.CollectionViewSource对象,向该对象提供数据后,将其分配给链接的CollectionViewLink.CollectionView属性。
当指定数据时,您应该定义其可视化表示。要做到这一点,创建一个DataTemplate应该应用于每个数据项,并将其分配给链接的CollectionViewLink.DetailTemplate属性。为了提供关于分组信息的链接,为每个分组级别创建一个GroupInfo对象,并通过GroupInfo.HeaderTemplate属性指定一个应该应用于当前分组级别中的每个组头的模板,然后将GroupInfo对象添加到链接的CollectionViewLink.GroupInfos 集合中。
创建可打印控件链接
可打印控件链接用于呈现控件和实现IPrintableControl或IRootDataNode接口的数据对象。例如,TableView对象可以通过可打印控件链接呈现。
要创建一个可打印的控件链接,将适当的控件或数据对象传递给PrintableControlLink构造函数。
页面设置
DXPrinting Library提供了许多设置,允许自定义报表的页面选项。
您可以在报表中包含页眉和页脚,以及整个文档的页眉和页脚。要做到这一点,分别通过TemplatedLink.PageHeaderTemplate、TemplatedLink.PageFooterTemplate、TemplatedLink.ReportHeaderTemplate和TemplatedLink.ReportFooterTemplate 属性指定它们的模板。通过将适当的数据对象分别分配给TemplatedLink.PageHeaderData、TemplatedLink.PageFooterData、TemplatedLink.ReportHeaderData和TemplatedLink.ReportFooterData属性,这些模板也可以提供一些自定义数据。
下表列出了用于指定报表页设置的其他属性。
属性 | 描述 |
---|---|
LinkBase.CustomPaperSize | 获取或设置自定义纸张的大小(以百分之一英寸为单位测量)。 |
LinkBase.DocumentName | 获取或设置文档的名称。 |
LinkBase.Landscape | 获取或设置一个值,该值指示页面方向是否为横向。 |
LinkBase.Margins | 获取或设置报表页面的边距(以百分之一英寸为单位测量)。 |
LinkBase.MinMargins | 指定最小打印机边距值。 |
LinkBase.PaperKind | 获取或设置文档的纸张类型。 |
LinkBase.SuppressAutoRebuildOnPageSettingsChange | 获取或设置一个值,该值指示是否有必要在每次更改链接的页面设置时禁止重建文档。 |
导出和打印报表
在创建链接对象并提供数据之后,您可以通过调用LinkBase.CreateDocument方法从链接创建文档,现在报表生成了就可以打印和导出它,也可以在DocumentPreview控件中显示它。要做到这一点,有必要创建一个新的LinkPreviewModel实例,将当前链接作为初始化参数,并将其分配给DocumentPreview.Model属性。
使用LinkBase.ShowPrintPreview方法可打开报表预览窗口。要打开一个模式预览窗口,使用LinkBase.ShowPrintPreviewDialog方法,打印对话框可以通过LinkBase.Print方法调用,要在不打开任何对话框的情况下打印报告,请使用LinkBase.PrintDirect方法。
下表列出了用于将报表导出为不同格式的方法。
方法 | 描述 |
---|---|
LinkBase.ExportToCsv | 使用指定的CSV特定选项,用CSV格式将报表导出到指定的流。 |
LinkBase.ExportToHtml | 使用指定的特定于HTML的选项,用HTML格式将报告导出到指定的流。 |
LinkBase.ExportToImage | |
LinkBase.ExportToMht | 使用指定的MHT特定选项用MHT格式将报告导出到指定流。 |
LinkBase.ExportToPdf | 使用指定的PDF特定选项用PDF格式将报表导出到指定的流。 |
LinkBase.ExportToRtf | 使用指定的RTF特定选项用RTF格式将报表导出到指定的流。 |
LinkBase.ExportToText | 使用指定的特定于文本的选项用文本格式将报表导出到指定的流。 |
LinkBase.ExportToXls | 使用指定的特定于XLS的选项用XLS格式将报告导出到指定的流。 |
LinkBase.ExportToXlsx | 使用指定的特定于XLSX的选项,用XLSX格式将报告导出到指定的流。 |
LinkBase.ExportToXps | 使用指定的特定于XPS的选项用XPS格式将报表导出到指定的流。 |