【问题标题】:Is there OLE Automation in Java?Java中有OLE自动化吗?
【发布时间】:2023-11-24 17:25:01
【问题描述】:

是否可以在 Java 中使用 OLE 自动化?如果不是,为什么在 Java 中不可能?

我希望以不同格式(即 .csv 等...)自动导出 Excel 电子表格

提前感谢您的回答:)

【问题讨论】:

  • 我用过 nevaobject,但那是十多年前的事了。

标签: java excel ole ole-automation


【解决方案1】:

最近(2013 年 3 月),一位独立贡献者向 JNA 添加了对通用 COM 自动化的支持,这是最后一个从 Java 集成本机平台 API 的人。与 Jawin/JACOB/etc 不同,JNA 仍然非常积极地维护。

有关如何使用它的示例,请参阅here。到目前为止,与 Office API 的预绑定绑定非常简单,但看看the code,似乎很容易使用 COM 自动化 API(IDispatch、Variant 等)对几乎任何 COM 接口进行后期绑定。

不过,我希望看到更完整的 Office COM API 绑定,因为它们是迄今为止世界上最常用的 COM API。也许还可以有一个“MSExcel2007.java”、“MSExcel2010.java”等来涵盖不同的 API 版本。因此,这是一项正在进行中的工作,但 JNA 现在对 COM 自动化与 JACOB/Jawin 一样普遍有用,而且它的维护非常积极(截至 2013 年 4 月)。

【讨论】:

    【解决方案2】:

    您可以使用JACOB。但是会有一些痛苦,因为它没有很好的记录并且性能不是最好的。根据您所针对的 Windows 版本,也很难让它在您的环境中正确运行。如果您正在构建可扩展的 Web 应用程序,我绝对不会使用它。另一个选择是Apache POI,它已经从早期的根源中走了很长一段路,并被用于许多生产就绪工具,如 JBoss Drools。如果您决定使用 JACOB,那么我建议您阅读此 SO 主题:

    Is there a good reference for using OLE Automation (from Java)?

    【讨论】:

    • 像 Java 那样使用脚本语言会不会更容易
    • 如果您对解决方案有灵活性,我会使用 VB 脚本或 Powershell。
    【解决方案3】:

    有一个名为JACOB 的库可以精确地提供您正在寻找的内容。 “来自 Java API”是什么意思?你的意思是来自官方的 J2SE 包?我不知道如何回答这个问题,只是说 J2SE 没有包含满足所有可能需要的库,尤其是那些只在单一操作系统上工作的库。这就是存在第三方软件包的原因。

    【讨论】:

    • 我想我是希望 sun/oracle 能够做到这一点。使用脚本语言会更容易吗?而不是 java
    • 取决于您的目标。如果您尝试集成现有的 Java 应用程序和现有的 Java 库,我会坚持使用 Java。
    【解决方案4】:

    商业,但他们似乎有免费的开源和学术许可证...

    JExcel

    JExcel Developer Documents

    我没有隶属关系。

    【讨论】: