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

标签 java excel jacob

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

最佳答案

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

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

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

关于java - 通过 Jacob 在 Java 应用程序和 Microsoft 应用程序之间进行同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019712/

相关文章:

java - 来自资源的大图像获取异常

java - 查找半径位置

excel - 如何将 .iqy 文件作为数据源加载到 Excel 中

excel - 在 Excel VBA 宏中创建新行(我做错了什么?)

Excel,VBA : How to pass multiple variables to . OnAction

java - 奇怪的 Clojure Box - 库 (dll) 问题

java - 消息 列类型无效 : getBLOB not implemented for class oracle. jdbc.driver.T4CLongRawAccessor

java - ArrayIndexOutOfBoundsException - 解析 csv 文件时

java - 我可以从 Jacob 设置 hwnd 吗?

java - 调用 .OCX 方法的 JACOB 灾难性故障