我想用 ActiveX 打开和操作 Excel 文件。我在其他项目上使用 Python 的Win32 扩展和 Groovy 的Scriptom库取得了成功,但如果可能的话,这次需要做的是纯 Java。
我已经尝试过Jacob Java COM Bridge,但这似乎并不那么简单或易于使用,而且我无法用它来检索单元格值(即使这是 Scriptom 底层的库)。有替代品吗?
雅各布真的是这里工作的工具。我建议您花时间了解一下 COM 和 ActiveX 的工作原理,我想您会发现它更易于使用。COM 是一个相当大的成就,但它很难。像 VB 这样的包装器使它看起来很容易(对于它们工作的有限用途),但它一点也不容易。我有一本关于学习 COM 的好书,但现在手头没有名字......
您想了解 IDispatch 接口(这是大多数 Excel 的 COM 接口围绕它开发的)。这是一个令人讨厌的、讨厌的界面(其中一种病毒式的东西,你可以用它做很多事情,以至于无法判断实际发生了什么)——但学习它是关键。
如果您只在一个领域遇到问题(即从单元格中获取值),您可以获取 Scriptom 的源代码并查看它们的作用(毕竟是开源的!)。
另一个建议是尝试在 VBA 中实现代码的一些测试用例,并确保您正确考虑了所有返回值。当我们在我们的一个 Java 应用程序中进行 Excel 自动化时,我们从 Word 的 VBA 中实现了通用算法,解决了问题案例等......之后,转移到 Jacob 非常简单。
http://www.nevaobject.com/_docs/_java2com/java2com.htm怎么样——这是商业的,但效果更好。
你看过 JExcelAPI 吗?这是一个直接读取和写入 Excel 文件的 Java 库,而不是使用 ActiveX。
不是对您的问题的确切答案,但它也可以解决问题,特别是如果您正在寻找纯 Java 解决方案。
还有JIntegra,它做类似的事情。也是商业的。还有JNIWrapper,它做了类似的事情。再次,也是商业的。