多个Oracle数据库创建一个Excel报表
文章作者 100test 发表时间 2007:03:14 13:34:02
来源 100Test.Com百考试题网
微软的 Excel 电子表格广泛应用于当今的商业环境中。 尽管 Excel 能够读取和显示分隔文件,但 .xls 专有格式提供了其他一些富于表现力的特性,其中包括字体格式和多工作表电子表格。
许多商业和开放源代码的工具都提供了生成可由 Excel 读取的报表的功能。 比如,您可以使用 Oracle Reports 生成一个电子表格,或使用 SQL*Plus 输出一个由逗号分隔的文件。 利用现有的一些工具可以访问多个数据源。 但报表的格式与特定查询的结果紧密联系,而不同的数据源有时会生成不同的结果。 (比如,对两个不同数据库中的表进行 SELECT * FROM emp 查询,返回来的列的数量和类型将必然不同。) 出于各种各样的原因,您可能要访问几个不同的数据源,然后在一个电子表格中整理返回的结果:
数据库管理员可能希望比较不同数据库的配置。
应用开发人员可能需要检查不同数据库中 PL/SQL 对象的版本。
在数据库间移植数据时,数据库管理员可能需要估计作业的进度。
程序员使用测试数据库调试应用程序时,可能需要将当前数据与生产环境中的数据进行比较。
根据数据库的不同结构和用途,可能还有其它原因促使您想要生成此类电子表格,但所有原因都依赖于数据库的功能要求和定义。
本文将说明如何使用 Apache Jakarta POI 开放源代码项目从几个不同数据源生成一个电子表格。 工作簿中的每一个工作表将显示从某个给定 Oracle 数据库返回的结果。 在当前项目中您要达到的要求是:
运行该软件创建一个包含从一个或多个 Oracle 数据库获得的数据的电子表格。
用户将定义一个随意 SQL 查询,然后由各个配置的数据库处理该查询。
用户将定义一个或多个数据库连接。
生成一个配置文件,其中包括您定义的数据连接和 SQL 查询。
该配置文件的格式为 XML 格式。
将生成一个工作表显示每个数据库返回的结果。
将依据服务器名称和 Oracle 系统标识符(又称为 Oracle SID)命名每个工作表。
电子表格将以粗体显示列标题(基于数据库列)。
该软件将用 Java 编写。
将使用 JDBC 访问数据库。
将使用 Jakarta POI 生成电子表格。
您可以为生产系统添加许多要求。 很明显,上面的列表中遗漏了口令加密方面的内容。 虽然现在已经能够处理 SQL 数据类型,但是一个更健全的解决方案还应该能够处理一些特殊的数据类型,如 BLOB(二进制大对象)、CLOB(字符大对象)和 LONG. 目前只能调用一个 XML 配置文件和一个脚本来设置环境和执行 Java 类,还未提供易于使用的图形界面。 由于只执行一个查询,因此必须保证该 SQL 查询无语法错误,并基于每个数据库的对象返回一个结果集。 且记录的内容非常少。 尽管如此,如果程序达到了上面的要求,那么该程序还是相对容易使用的,并且它能够快速生成包含许多数据库数据的文档。 如果需要,还可以使用 Excel 编辑该文档的格式。 因为将多个数据源的数据纳入了一个电子表格中,所以我们可以很方便对从各数据库提取的数据进行比较了。 此外,您使用的主要机制即 POI 应用程序编程接口 (API) 调用清晰可辨,而不会被构建一个功能齐备的解决方案所需的其他代码和资源所淹没。
测试和要求
本文所生成的软件是在安装有 Java 运行时环境 (JRE) 1.4.2、运行 Windows 2000 系统的 PC 机上编写和测试完成的。(要了解 JRE 1.5 相关的问题,参见边栏) Java 的设计初衷就是实现平台无关性,所以在任何安装有适当 JRE 的机器上都应该能正常运行。 使用该版本的 JRE,您无需访问其他外部 API(如 Xerces 和 Xalan)就能利用 XML 处理。
初始配置
如果系统中有几种 JRE,那么必须确保正确设置 PATH 环境变量,以调用 1.4.2 或更新版本的 JRE,而非老版本的 JRE。 可在 java.sun.com/j2se/1.4.2/docs/api 中 获取 JRE 1.4.2 版的 Javadoc 文档。
该软件下载中包含的批处理文件中的信息已经进行过更改,可用于 Linux 环境,而且这些信息已经在 Red Hat Linux 上测试通过。 只是对 run.sh 进行了适当的修改,并没有更改并执行 run.bat。 在 Linux 环境中,可使用 OpenOffice.org 的电子表格程序来显示电子表格。
环境设置基本上就是两个环境变量的设置: PATH 和 CLASSPATH。 首先要正确设置 CLASSPATH,以利用提供数据库访问和 Excel 电子表格功能的 API。 使用 run.bat 文件设置这一变量,这样就可以访问相应的 Java 文档(.jar 文件)。 您可能需要将指向 classes12.jar(其中包含 Oracle JDBC 驱动)的路径更改您系统上的正确路径。 在安装许多不同的 Oracle 产品时都将自动安装该文件。如果您系统中没有该文件,本文前面提供有文件的下载链接。 如果 CLASSPATH 不包含这一 jar,当程序试图载入 JDBC 驱动时,会出现错误:
Driver not found: oracle.jdbc.driver.OracleDriver
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver |
下载的文件中有一个 lib 目录,其中包含有 POI jar (poi-2.5.1-final-20040804.jar)。 如果 CLASSPATH 不包含这一文件,当程序试图创建一个工作表对象时,将出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/poi/hssf/usermodel/HSSFWorkbook |
The broadcast.jar 包含有一些文件,利用它们可以集中这些 API 的功能,然后基于配置的连接和 SQL 查询来 构建电子表格。 配置文件 (config.xml) 应该位于执行 broadcast.jar 的目录中。 如果不是,将出现错误(文件系统路径正确):
java.io.FileNotFoundException: C:\config.xml
(The system cannot find the file specified) |