【问题标题】:Synchronization between Java Application and Microsoft Application via Jacob通过 Jacob 在 Java 应用程序和 Microsoft 应用程序之间进行同步
【发布时间】:2011-02-16 17:15:59
【问题描述】:

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

【问题讨论】:

  • 能不能说清楚数据库和excel之间的关系是什么?两个操作都涉及同一个excel文件吗?请编辑问题,因为它很难理解。
  • 例如;用户更改了 excel 文件中的列值,当发生这种情况时,我想将更新的值保存到数据库中。因此,当文件中发生任何更改时,必须触发一个事件,并且该事件必须保存更改的值.. :)

标签: java excel jacob


【解决方案1】:

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

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

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

【讨论】:

  • 我必须使用 Java,因为我们的网站是 j2ee。
  • 使用其他技术在java和excel之间进行通信效率不是很高。我想知道是否有图书馆提供这种交流。
  • 考虑到您的 cmets,我扩展了答案。
  • 谢谢 :) 我现在有个主意了 :)
  • 不客气,穆卡尤法。但是请考虑Workbook.BeforeSave 而不是Worksheet.Close 事件。不要在每次单元更改时引入延迟。而且我想只有在保存更改后才应该进行同步。
猜你喜欢
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多