在Java中操作ActiveX对象的最佳/最简单方法是什么?

时间:2008-10-07 23:07:39

标签: java com activex

我想用ActiveX打开和操作Excel文件。我在其他项目上使用Python的Win32 Extensions和Groovy的Scriptom库取得了成功,但如果可能的话,这次需要这样做才是纯Java。

我已经尝试了Jacob Java COM Bridge,但这似乎并不简单易用,而且我无法检索单元格值(即使这是基础Scriptom的库)。还有其他选择吗?

4 个答案:

答案 0 :(得分:4)

雅各布真的是这里工作的工具。我建议你花时间学习一下COM和ActiveX的工作方式,我想你会发现它更容易使用。 COM是一个相当大的成就,但它很难。像VB这样的包装使它看起来很容易(对于它们有用的有限用途),但它并不容易。我有一本关于学习COM的好书,但现在没有名字好用......

您想了解IDispatch接口(这是大多数Excel的COM接口的开发)。这是一个讨厌的,令人讨厌的界面(你可以用它来做很多病毒式的事情之一,它无法分辨实际发生的事情) - 但学习它是关键。

如果您只在一个区域遇到问题(即从单元格获取值),您可以获取Scriptom的源代码并查看它们的作用(毕竟是开源的!)。

另一个建议是尝试在VBA中实现代码的一些测试用例,并确保正确思考所有返回值。当我们在我们的一个Java应用程序中进行Excel自动化时,我们使用Word的VBA实现了通用算法,处理了问题案例等......之后,转移到Jacob非常简单。

  • ķ

答案 1 :(得分:0)

http://www.nevaobject.com/_docs/_java2com/java2com.htm怎么样 - 这是商业化但效果更好。

答案 2 :(得分:0)

你看过JExcelAPI吗?这是一个直接读取和写入Excel文件的Java库,而不是使用ActiveX。

不是您问题的准确答案,但它也可以解决问题,特别是如果您正在寻找纯Java解决方案。

答案 3 :(得分:0)

还有JIntegra,它做了类似的事情。也是商业的。 还有JNIWrapper,它做了类似的事情。再次,也是商业。