导出一个数据报表

在编译了一个报表之后,您或许希望重新使用它,要么作为一个大文档的一部分,要么在 intranet 或 Internet 上发行。数据报表设计器的 ExportReport 方法使您能够完成这些任务。使用 ExportReport 方法,可以将任何报表作为文本文件或 HTML 文件导出。此外,也可以使用任意的 ExportFormat 对象剪裁已导出的文件的内容或外观。

重点 ExportReport 方法不支持图像或图形形状导出。

ExportFormat 对象

ExportReport 方法被设计为与 ExportFormat 集合一同使用。集合中的每个 ExportFormat 对象表示一个单独的报表格式。例如,一个 intranet 发行格式的报表可能包含工作组或雇员的名字作为报表标头的一部分;为 Internet 发行的报表,则那些名字将被清除或替换。因此要创建至少两个 ExportFormat 对象,每一个要适应于不同的发行机制。然而,也可能不创建任何 ExportFormat对象就导出一个报表,因为已经为您提供了四个。

四个缺省 ExportFormat 对象

缺省情况下,ExportFormat 集合包含四个成员。下表列出了四个成员以及与其相关联的文件过滤器:

对象 文件过滤器 描述
ExportFormats(1) *.htm, *.html HTML
ExportFormats(2) *.htm, *.html Unicode HTML
ExportFormats(3) *.txt Text
ExportFormats(4) *.txt Unicode Text

如果需要使用任何缺省类型,也可以使用Key属性指定缺省的类型。Key属性值和常数如下所示:

对象 关键字 常数
ExportFormats(1) key_def_HTML rptKeyHTML
ExportFormats(2) key_def_UnicodeHTML_UTF8 rptKeyUnicodeHTML_UTF8
ExportFormats(3) key_def_Text rptKeyText
ExportFormats(4) key_def_UnicodeText rptKeyUnicodeText

假定缺省的成员符合您需要,通过使用四个成员之一,可以不创建另一个ExportFormat对象就导出一个报表。例如,要导出一个按日的HTML报表,可以使用下面的代码:

DataReport1.ExportReport rptKeyHTML

显示一个对话框是可选的

编程人员可以决定在导出一个报表时是否显示一个对话框。例如,如果报表在每天早晨自动创建,并写入同一个文件以便在 intranet 上发行,就没有必要显示对话框。只要提供一个有效的文件路径和关键字,并将 Overwrite 参数设置为 True,则不显示对话框。

' 作为HTML导出一个报表,覆盖任何已经存在的文件。 导出 
' 所有页面到Daily_Report.htm文件。
DataReport1.ExportReport rptKeyHTML, "C:\Temp\Daily_Report", True, , _
rptRangeAllPages

注意 在上面的代码中,第二个参数看起来象个目录,但实际上是一个文件名。“Daily_Report.htm”是被写的文件名。ExportFormat 对象提供文件扩展名(.htm),因此没有必要把它写在文件名参数中。

ExportFormat 提供对话信息

ExportFormat 对象也包含用户调用 ExportReport 方法时显示的信息。特别的,FileFormatString 属性设置在“导出”对话框的“Save As Type”框中显示的文本。例如,设想一个公司有一个标准的 ExportFormat 对象要用于所有报表。下面的代码将确保 ExportFormat 可以在“导出”对话框的格式类型列表中得到:

Dim strTemplate As String

' 首先为ExportFormat对象创建一个模板。
strTemplate = "MyCompany Daily Report" & vbCrLf & rptTagBody

' 添加一个ExportFormat对象。FileFormatString决定
' 将在“导出”对话框中显示什么内容。
DataReport1.ExportFormats.Add _
   Key:="StandardReport", _
   FormatType:=rptFmtText, _
   FileFormatString:="Standard Report (*.txt)", _
   FileFilter:="*.txt", _
   Template:=strTemplate

' 调用ExportReport方法指定要使用的
' 名为StandardReportExportFormatDataReport1.ExportReport "StandardReport", , False, True, _
rptRangeFromTo, 1, 10

被调用时,“导出”对话框类似这样:

模板代码

ExportFormat 对象的核心是它的模板。一个模板只是一个字符串,其中包括您想要显示的文本以及表示数据报表多个部分的常数。常数、值和描述如下表所示:

常数 描述
rptTagTitle <!--MSDBRPT_Template_Title--> 表示报表的标题,可在Title属性中找到。
rptTagBody <!--MSDBRPT_Template_Body--> 表示报表体。

要创建一个只包括作者名,然后是报表体的简单数据报表,其模板类似这样:

Dim strT As String
strT = "Author: " & InputBox("Your name") & vbCrLf & rptTagBody
drpNwind.ExportFormats.Add "AuExp", rptFmtText, _
"Author Only Text File", "*.txt", strT