我想用ActiveX打开和操作Excel文件。我在其他项目上使用Python的Win32 Extensions和Groovy的Scriptom库取得了成功,但如果可能的话,这次需要这样做才是纯Java。
我已经尝试了Jacob Java COM Bridge,但这似乎并不简单易用,而且我无法检索单元格值(即使这是基础Scriptom的库)。还有其他选择吗?
答案 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,它做了类似的事情。再次,也是商业。