通过Jacob在Java应用程序和Microsoft应用程序之间进行同步

时间:2011-02-16 17:15:59

标签: java excel jacob

在我的java应用程序中,我使用Jacob库连接到Microsoft Excel。一切都很好,但我不知道如何通过使用Jacob库在Excel页面发生任何更改时捕获com事件。例如,在我的项目中,我连接数据库获取表值并将这些值复制到Excel页面的单元格中。每当更改单元格值时,表值也会更改。我希望雅各布在java和Microsoft Excel应用程序之间进行同步。

1 个答案:

答案 0 :(得分:1)

不要使用Java来实现这一目标。请参阅此问题:Excel OnChange event,重点是this answer。您应该直接从Excel使用com访问您的数据库。使用ADO很容易。这ADO tutorial from w3schools看起来也不错。

如果任务太复杂而无法直接从Excel执行,您可能会考虑在数据更改的某处(例如在数据库中)放置一个小标记,并从其他应用程序(可能是Java应用程序)处理此标记。困难在于访问数据库的凭据必须在Excel工作表中进行硬编码。但是,您可以创建具有窄数据库权限的单独数据库用户。

查看您的评论我还尝试使用Excel的更改事件来检测其他用户所做的更改。我在Excel 2003上的经验表明,这只适用于本地。也就是说,仅对进行更改的用户触发事件。如果许多用户打开工作表,则不会收到其他用户更改导致的更改事件。所以你的方法是不可行的。您可以使用Excel 2010进行测试,但我的印象是,事件通常只在本地工作。在网上找不到任何关于它的东西。只有这篇文章:Track changes in a shared workbook