本教程将说明如何为 Oracle Application Express 应用程序添加 PDF 报表和 Microsoft Word 图表。
大约 1 个小时
本教程包括下列主题:
| 概述 | |
| 前提条件 | |
| 导入并安装打包的应用程序 | |
| 创建报表和主从表单 | |
| 添加 PDF 报表 | |
| 添加 Microsoft Word 图表 | |
| 总结 |
将鼠标置于此图标上可以加载和查看本教程的所有屏幕截图。
(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
Web 和浏览器在显示内容方面十分出色。但当您希望打印内容,或者将内容另存为文件以包含在其他文档中或保存为电子邮件附件时,它的缺点就暴露出来了。如果您希望在应用程序中使用实时图表,可以使用 Flash 图表。如果您需要向外部组织提交每月的状态报表,并希望包含该信息,可能需要包含一个 Word 报表作为输出,以使该外部文档易于创建。输出类型(PDF、Word、Excel)完全取决于最终用户的需求。通过应用程序设计,您应该在基本应用程序内以有用的方式显示所有信息(通过浏览器查看)。然后,如果需要,您可以创建一些特殊报表,这些报表将以 pdf、word 或 excel 格式输出。这些报表是需要存在于应用程序之外的项目(例如,通过电子邮件发送、硬拷贝或邮寄的发票、在某人的个人文件中归档的绩效评估或者上一财年的下载图表)。
开始本教程之前,您应该:
| 1. | 安装 Oracle 数据库 11g。 |
|
| 2. | 安装 Oracle BI Publisher 10.1.3.2.0 版。请参阅文档 PDF 打印功能。 |
|
| 3. | 安装 Oracle BI Publisher desktop 10.1.3.2.0。 |
|
| 4. | 为 Oracle Application Express 配置高级报表打印功能。请参阅文档 PDF 打印功能。 |
|
| 5. | 下载 apexpdf.zip 并将其解压缩到您的工作目录中。 |
|
| 6. | 安装 Microsoft Word。注意,由于这个要求,该 OBE 仅在 Windows 上受支持。 |
|
| 7. | 为您的浏览器安装 SVG 插件。 |
|
注:在您的开发环境内,要让 Oracle BI Publisher Desktop 工作,需要安装 Microsoft Word。最终用户运行生成的应用程序不需要使用 Oracle BI Publisher Desktop。只需使用适当的应用程序(如 PDF 阅读器、MS Word、MS Excel 等)打开您的应用程序生成的文件。
在开始创建您的报表所基于的报表和主从表单之前,需要导入打包的应用程序并安装支持对象。执行以下步骤:
| 1. |
输入以下 URL 登录 Oracle Application Express(将 <主机名> 更改为 localhost、指定的主机名或 apex.oracle.com)。 http://<主机名>:8080/pls/apex
|
|
| 2. |
要登录 Oracle Application Express,请输入以下详细信息,然后单击 Login。
|
|
| 3. |
在 Workspace 主页上,单击 Application Builder。
|
|
| 4. | 单击 Import 按钮。
|
|
| 5. | 选择 Browse... 按钮搜索导入文件。
|
|
| 6. | 从工作目录(即 c:\wkdir\apexhol)中选择 md_pdf_howto_installer.sql 文件,然后单击 Open。
|
|
| 7. | 单击 Next。
|
|
| 8. |
对于文件导入确认,单击 Next 安装导入的文件。
|
|
| 9. | 在 Install Application 向导中,选择适当的模式并单击 Install。
|
|
| 10. |
对于 Supporting Objects,确保选择了 Yes,然后单击 Next。
|
|
| 11. |
确认您的选择,然后单击 Install。
|
|
| 12. |
支持对象已经安装完毕。单击 Install Summary。
|
|
| 13. | 检查安装的对象。现在可以创建主从表单了。单击 Application Builder 路径式导航栏。
|
|
要创建报表和主从表单(将用于启动高级报表),执行以下步骤:
| 1. |
选择 How To Create a Master-Detail PDF Report 应用程序。
|
| 2. |
单击 Create Page。
|
| 3. |
选择 Form 并单击 Next。
|
| 4. |
选择 Master Detail Form 并单击 Next。
|
| 5. |
选择 MD_PDF_ORDERS (table) 作为 Table/View Name,并选择
|
| 6. |
单击 Next。
|
| 7. | 选择 MD_PDF_ORDERS_ITEMS (table) 作为 Table/View Name,并选择
|
| 8. | 单击 Next。
|
| 9. | 对于 Primary Key Column ORDER_ID,接受默认选项 Existing Trigger,并单击 Next。
|
| 10. | 对于 Primary Key Column ORDER_ITEM_ID,接受默认选项 Existing Trigger,并单击 Finish。
|
| 11. | 单击 Create。注意,向导为应用程序添加了两个页面,即,一个针对主表的报表和一个引用这两个表的主从表单。
|
| 12. | 要执行 Master Detail 表单,单击 Run Page。
|
| 13. | PDF Orders 报表出现。单击其中一个订单的
|
| 14. | Master Detail 页面出现。首先,您将创建一个以特定格式合并所有订单信息的报表。滚动至页面底部。
|
| 15. | 选择开发人员工具栏中的 Application 链接。
|
您可以在表格化表单上启用区域打印,以便只显示选定订单的订单项记录。要创建合并所有订单信息和订单项的报表,您需要创建一个报表查询和报表布局。报表查询标识要从应用程序提取的数据。报表布局标识显示数据的位置和方式。要添加这些组件,需要执行以下任务:
| 创建报表查询 | |
| 创建 RTF 模板 | |
| 上载 RTF 文件 | |
| 将 PDF 报表链接到应用程序 |
报表查询标识要从数据库和会话状态检索的数据。要创建报表查询,执行以下操作:
| 1. | 单击 Shared Components。
|
| 2. | 在 Reports 下,单击 Report Queries。
|
| 3. | 单击 Create。
|
| 4. | 在 Name 域中输入 order_details,并输入以下 SQL 查询,然后单击 Next。注::P3_ORDER_ID 指的是当前页面中的选定订单。 SELECT LINE_ITEM_ID,
QUANTITY,
ORDER_ITEM_ID,
PRODUCT_NAME,
to_char(UNIT_PRICE,'$9,999.99') unit_price
FROM MD_PDF_ORDER_ITEMS
WHERE ORDER_ID = :P3_ORDER_ID
|
| 5. | 该查询必须至少检索一个记录才能生成 XML。您的查询包含一个绑定变量,因此您必须输入一个将在生成 XML 时使用的有效值。要确保返回记录,您需要测试查询。要测试查询,在 :P3_ORDER_ID 域中输入 2359,然后单击 Test Query。
|
| 6. | 针对该订单 ID 应该显示五个记录。单击 Close。
|
| 7. | 单击 Next。
|
| 8. | 既然您已经有了订单项数据,您需要包含第 3 页上各项的会话状态。这用于显示订单详细信息。单击 Select Items 旁边的向上箭头。
|
| 9. | 选择 P3_CUSTOMER_NAME。
|
| 10. | 单击 Add。
|
| 11. | 为以下各项重复步骤 8-10,然后单击 Next。 P3_ORDER_DATE P3_ORDER_ID P3_ORDER_MODE P3_ORDER_STATUS P3_ORDER_TOTAL P3_SALES_REP
|
| 12. | 对于 XML Structure,选择 Advanced (include session state information),然后单击 Download XML 按钮。
|
| 13. | 选择 Save to Disk 并单击 OK。
|
| 14. | 在 File Name 域中输入 order_details.xml,然后单击 Save。
|
| 15. | 此时,您可以在该页面上使用 BI Publisher Desktop 插件创建 RTF 模板,然后上载该模板。或者,也可以保存查询在以后编辑,以引用完整的模板。在本例中,您将保存报表查询。单击 Next。
|
| 16. | 注意显示的 URL。该 URL 将用于从您的应用程序中调用该报表。单击 Finish。
|
| 17. | 查询创建完毕。单击 Shared Components 路径式导航栏。
|
要编辑报表查询生成的 XML,您需要使用 Oracle BI Publisher Desktop 10.1.3.2.0 版(参见前提条件)。在本部分中,您将在 Microsoft Word 中加载 XML 详细信息,插入域并包含行项目,然后将更改另存为 RTF 文件。执行以下步骤:
| 1. | 打开 Microsoft Word。
|
| 2. | 选择 Oracle BI Publisher > Data > Load Sample XML Data。
|
| 3. | 选择 order_details.xml 并单击 Open。
|
| 4. | 文件成功加载。单击 OK。
|
| 5. | 注意,页面上没有显示任何内容。您希望在报表中添加订单列。选择 Oracle BI Publisher > Insert > Field。
|
| 6. | 选择 P3 Customer Name 并单击 Insert。
|
| 7. | 注意,该域会显示在文档中。在域末尾单击并按 Enter 键,以转到下一行。然后,在 Field 窗口中,选择 P3 Order Date 并单击 Insert。
|
| 8. | 为以下域重复上述步骤: P3 Order ID P3 Order Mode P3 Order Status P3 Order Total P3 Sales Rep 添加所有必需的域之后,单击 Field 窗口中的 Close。
|
| 9. | 如屏幕截图所示,添加域标签。
|
| 10. | 您还希望添加一个表,其中包含订单的所有行项目。在订单详细信息下方插入几个空白行。选择 Oracle BI Publisher > Insert > Table Wizard。
|
| 11. | 接受默认选项 Table,然后单击 Next。
|
| 12. | 对于 Grouping Field,选择 DOCUMENT/REGION/ROWSET/ROW 并单击 Next。
|
| 13. | 选择
|
| 14. | 单击 Next。
|
| 15. | 您无需进行任何分组选择,因为您的报表将只选择一个订单。单击 Next。
|
| 16. | 对于 Sort By,选择 Line Item Id 并单击 Next。
|
| 17. | 对于 Label,将 Line Item Id 更改为 Line Item,将 Order Item Id 更改为 Order Item,然后单击 Finish。
|
| 18. | 您的文档应如以下屏幕截图所示。
|
| 19. | 要添加页眉和页脚,选择 View > Header and Footer。
|
| 20. | 将 My Order Report 添加到页眉并更改字体和大小,然后单击页眉和页脚工具栏中的 Close。
|
| 21. | 您希望将文档另存为 RTF 文件。选择 File > Save As。
|
| 22. | 选择 Rich Text Format (*.rtf) 作为保存类型,输入 order_details.rtf 作为文件名,然后单击 Save。
|
| 23. | 退出 Microsoft Word。
|
完成报表布局模板后,您需要将其上载到应用程序并与您的报表查询关联。执行以下步骤:
| 1. | 切换到 Oracle Application Express 窗口,并导航到您的应用程序。
|
| 2. | 单击 Shared Components。
|
| 3. | 在 Reports 下,单击 Report Layouts。
|
| 4. | Report Layouts 页面出现。单击 Create。
|
| 5. | 对于 Layout Type,选择 Named Columns (RTF) 并单击 Next。
|
| 6. | 对于 Layout Name,输入 Order details 并单击 Browse...。
|
| 7. | 选择 order_details.rtf 并单击 Open。
|
| 8. | 单击 Create Layout。
|
| 9. | 现在,您可以将报表布局与报表查询相关联。单击 Shared Components 路径式导航栏。
|
| 10. | 在 Reports 下,单击 Report Queries。
|
| 11. | 选择 order_details 报表查询。
|
| 12. | 在 Report Query Attributes 下,对于 Report Layout,选择 order_details。注意以下自动填充的 URL,然后单击 Apply Changes。 f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=order_details
|
| 13. | 现在,您已经完成了 RTF 模板的加载,并将其与您在本教程前面部分创建的报表查询相关联。下面,您可以将报表链接到您的应用程序。单击 Application 路径式导航栏。
|
在本部分中,您将通过创建按钮和分支将 PDF 报表链接到应用程序。执行以下步骤:
| 1. | 在应用程序中,选择 Master Detail 页面。
|
| 2. | 在 Buttons 下,单击 Create 图标。
|
| 3. | 对于按钮区域,选择 Edit Md Pdf Orders 并单击 Next。
|
| 4. | 该选项会将按钮置于顶部(或主)区域。对于按钮位置,接受默认选项 Create a button in a region position,然后单击 Next。
|
| 5. | 在 Button Name 域中输入 PRINT,在 Label 域中输入 Print PDF of Order,确保为 Action 选择 Submit Page and Redirect to URL,然后单击 Next。
|
| 6. | 接受默认选项,然后单击 Next。
|
| 7. | 要将按钮置于 Apply Changes 按钮的右侧,为 Position 选择 Region Template Position #CREATE#,然后单击 Next。
|
| 8. | 对于分支,接受默认选项(保留该选项为空),然后单击 Next。
|
| 9. | 您不希望在创建新订单时显示 print 按钮,因此需要添加一个条件。对于 Condition Type,选择 Value of Item in Expression 1 Is NOT NULL,并在 Expression 1 域中输入 P3_ORDER_ID,然后单击 Create Button。
|
| 10. | 在 Page Processing 的 Branches 下,单击 Create 图标。
|
| 11. | 接受默认选项,然后单击 Next。
|
| 12. | 对于 Branch Target,选择 URL,并在 URL Target 域中输入以下 URL。然后单击 Next。 f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=order_details
|
| 13. | 对于分支条件,在 Sequence 域中输入 .5,为 When Button Pressed 选择 PRINT (Print PDF of Order)。顺序很重要,因此在考虑页面默认分支之前要先考虑新分支。如果顺序排在现有分支后面,则永远不会调用新分支。然后单击 Create Branch。
|
14. |
按左箭头导航到 Md Pdf Orders 页面。
|
15. |
单击 Run Page 2 图标运行该页面。
|
16. |
单击其中一个订单旁边的
|
17. |
单击 Print PDF of Order 按钮。
|
18. |
您可以使用 Adobe Acrobat 打开该文件,也可以将其保存到一个文件中,然后在以后打开该文件。单击 OK。
|
19. |
下面所示的 PDF 报表就是通过您的报表查询和报表布局生成的。
|
通过 Oracle Application Express,您可以包含显示图表的区域。如果您希望所包含的图表可以写入文件或打印美观,可以包含 Microsoft Word 或 PDF 图表。您将遵循的步骤与添加 PDF 报表的步骤类似。
| 添加 Flash 图表区域 | |
| 创建报表查询 | |
| 创建 RTF 模板 | |
| 上载 RTF 文件 | |
| 将 Word 图表链接到应用程序 |
在创建 Word 图表之前,您将在应用程序中添加一个包含图表的区域。您将使用与创建 Word 图表类似的查询创建一个 flash 图表。执行以下步骤:
| 1. | 在 Application 页面中,导航到第 2 页 Md Pdf Orders。在 Regions 下,选择 Create 图标。
|
| 2. | 选择 Chart 作为区域类型,然后单击 Next。
|
| 3. | 选择 Flash Chart 并单击 Next。
|
| 4. | 在 Title 域中输入 Sales by Sales Rep,然后单击 Next。
|
| 5. | 对于 Chart Type,选择 2D Pie。然后单击 Update。
|
| 6. | 注意,预览变为饼图。单击 Next。
|
| 7. | 输入以下 SQL 查询,然后单击 Create Region。 SELECT null link,
nvl(SALES_REP, 'No Rep') SALES_REP,
ORDER_TOTAL
FROM MD_PDF_ORDERS
|
| 8. | 单击 Run Page 图标。
|
| 9. | 您的图表已添加到页面中。现在,您将创建 Word 图表,并在该区域中创建一个按钮以运行该 Word 图表。
|
Word 图表的报表查询比上一个报表查询简单,因为不需要引用会话状态。执行以下步骤:
| 1. | 返回 Application 页面并单击 Shared Components。
|
| 2. | 在 Reports 下,单击 Report Queries。
|
| 3. | 单击 Create。
|
| 4. | 在 Name 域中输入 sales_pie_chart,并输入以下 SQL 查询,然后单击 Next。 SELECT nvl(SALES_REP, 'No Rep') SALES_REP,
ORDER_TOTAL
FROM MD_PDF_ORDERS
|
| 5. | 与前一个报表查询不同,这里不需要测试查询,因为不需要填充绑定变量。单击 Next。
|
| 6. | 这里不需要会话状态变量,因此单击 Next。
|
| 7. | 对于 XML Structure,您可以保留默认选项 Standard,然后单击 Download XML。注意,您可以保留默认选项 Standard,因为您不需要访问会话状态信息。
|
| 8. | 选择 Save 并单击 OK。
|
| 9. | 对于 File Name,保留默认名称 sales_pie_chart.xml,然后单击 Save。
您可以在浏览器中保留该页面,而非立即保存报表查询(正如创建 PDF 报表时所做的那样)。在本教程的下一部分中,您将使用该页面创建 RTF 模板并加载,以创建报表布局。
|
在本部分中,您会再次将 XML 详细信息加载到 Microsoft Word 中,但将创建一个饼图。然后,您将更改另存为 RTF 文件。执行以下步骤:
| 1. | 打开 Microsoft Word。
|
| 2. | 选择 Oracle BI Publisher > Data > Load Sample XML Data。
|
| 3. | 选择 sales_pie_chart.xml 并单击 Open。
|
| 4. | 文件成功加载。单击 OK。
|
| 5. | 注意,页面上没有显示任何内容。选择 Oracle BI Publisher > Insert > Chart。
|
| 6. | 在左侧的 Data 下,您可以看到整个数据层次结构;Row 的下面是 Sales Rep 和 Order Total。将 Sales Rep 拖放到 Labels 域(大块空白区域下方的底部中央)。
|
| 7. | 将 Order Total 拖放到 Values 域(顶部中央)。对于 Aggregation,保留默认选项 Sum。
|
| 8. | 在 Title 域(右上角)中,输入 Sales by Sales Rep。
|
| 9. | 对于 Type,选择 Pie Chart。
|
| 10. | 对于 Style,您可以保留默认选项,或者选择一个配色方案(示例应用程序使用的是 Glass)。然后单击 OK。
|
| 11. | 您将立即看到图表的预览。选择 File > Save As。
|
| 12. | 选择 Rich Text Format (*.rtf) 作为保存类型,输入 sales_pie_chart.rtf 作为文件名,然后单击 Save。
|
| 13. | 退出 Microsoft Word。
|
现在,您可以切换回 Oracle Application Express,并将 RTF 文件上载到 Create Report Query Layout 页面(在前面保留为打开状态),同时创建报表查询和报表布局。执行以下步骤:
| 1. | 切换到 Oracle Application Express 窗口。
|
| 2. | 在 Step 3 - Upload RTF file 下,单击 Browse。
|
| 3. | 选择 sales_pie_chart.rtf 并单击 Open。
|
| 4. | 单击 Next。
|
| 5. | 对于 Output Format,选择 Word。注意,您可以使用 Test Report 按钮以任何选定的输出格式预览结果输出。复制 URL。这将是您在下一部分中添加的分支目标,用于调用图表。单击 Finish。
|
| 6. | 单击 Application 路径式导航栏。
|
在本部分中,您将通过创建按钮和分支将图表链接到应用程序。执行以下步骤:
| 1. | 在应用程序中,选择 Md Pdf Orders 页面。
|
| 2. | 在 Buttons 下,单击 Create 图标。
|
| 3. | 对于按钮区域,选择 Sales by Sales Rep 并单击 Next。
|
| 4. | 对于按钮位置,接受默认选项 Create a button in a region position,然后单击 Next。
|
| 5. | 在 Button Name 域中输入 PIE CHART,在 Label 域中输入 Pie Chart of Orders。对于 Action,保留默认选项 Redirect to URL without submitting page,然后单击 Next。注:在本例中,您不需要创建分支,因为不需要编写供报表查询读取的任何会话状态。
|
| 6. | 接受默认选项,然后单击 Next。
|
| 7. | 要将按钮置于报表上方的右上角,为 Position 选择 Region Template Position #CREATE#,然后单击 Next。
|
| 8. | 对于 Target,选择 URL。在 URL Target 域中,粘贴从 Create Report Query 向导中复制的 URL(应如下所示)。然后单击 Create Button。 f?p=&APP_ID.:0:&SESSION.:PRINT_REPORT=sales_pie_chart
|
9. |
单击 Run Page 图标运行该页面。
|
10. |
单击 Pie Chart of Orders 按钮。
|
11. |
选择 Open with Microsoft Word for Windows 并单击 OK。
|
12. |
您可以看到图表已显示在 Microsoft Word 中。现在,可以将该图表打印、保存或作为电子邮件附件发送。
|
在本教程中,您学习了如何:
| 创建报表和主从表单 | ||
| 为 PDF 报表和 Word 图表创建报表查询 | ||
| 在 Microsoft Word 中为 PDF 报表和 Word 图表创建 RTF 模板 | ||
| 将 RTF 模板加载为报表布局 | ||
| 将 PDF 报表和 Word 图表链接到应用程序中的页面 | ||