2011-02-16 126 views
1

在我的Java應用程序中,我使用Jacob庫連接到Microsoft Excel。一切都很好,但我不知道如何通過使用Jacob庫來發生Excel頁面中的任何更改時捕獲com事件。例如,在我的項目中,連接數據庫將獲取表值並將這些值複製到Excel頁面的單元格中。每當單元格值發生更改時,表格值也會更改。這就是我想要Jacob和Microsoft Excel應用程序之間的同步。通過Jacob的Java應用程序和Microsoft應用程序之間的同步

+0

你能否更清楚數據庫與excel之間的關係?這兩個操作中涉及的Excel文件是否相同?請編輯該問題,因爲很難理解它。 – Jarekczek 2012-09-14 11:07:14

+0

例如;用戶更改了excel文件中的列值,當這種情況發生時,我想將更新後的值保存到數據庫中。因此,當文件發生任何更改時,必須觸發一個事件,並且此事件必須保存更改的值。:) – olyanren 2012-10-11 10:14:28

回答

1

不要使用Java來實現這一點。看到這個問題:Excel OnChange event,重點是this answer。你應該直接從Excel訪問你的數據庫。這很容易使用ADO。這ADO tutorial from w3schools看起來還不錯。

如果從其他應用程序,可能是Java應用程序更改的數據和處理此標記的任務過於複雜,直接從Excel執行你可能會覺得把一個小標記的地方(例如數據庫)的。難點在於訪問數據庫的憑據必須在Excel工作表中進行硬編碼。但是,您可以創建具有較窄數據庫權限的單獨數據庫用戶。

查看您的評論我也嘗試使用更改 Excel事件以檢測其他用戶所做的更改。我在Excel 2003上的經驗表明,這隻適用於本地。這是事件僅針對做出更改的用戶而被解僱。如果許多用戶打開了工作表,他們不會收到更改事件引起的來自其他用戶的更改。所以你的方法是不可行的。您可以使用Excel 2010對其進行測試,但我的印象是這些事件通常只在本地工作。在網上找不到任何關於它的東西。只有這篇一般的文章:Track changes in a shared workbook

相關問題