微軟的 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) 調用清晰可辨,而不會被構建一個功能齊備的解決方案所需的其他代碼和資源所淹沒。