用于处理docx文档的Apache POI或docx4j

bec*_*cks 18 java docx apache-poi docx4j

您认为哪个更好用于将docx文档作为java对象读取?为什么?

换一种说法.哪个库支持大多数单词标签?

Jas*_*ext 24

披露:我领导docx4j项目

虽然docx4j也可以处理pptx和xlsx,但它主要用于docx操作.举例来说,截至撰写本文时,docx4j论坛中有近1000个主题.pptx论坛只有10%的音量.

无论您想对docx文档做什么,docx4j都应该能够为您提供帮助.有一个通用工作流程的单页概述.

对于许多常见要求,docx4j提供更高级别的API.这些包括:

  • 创建/打开/保存docx(当然)

  • 报告/文档生成,使用各种方法:(i)变量替换,(ii)XML数据绑定(特别强大),以及(iii)Mailmerge

  • 导出为HTML,XHTML

  • 导出为PDF(带字体支持)

对于其他任何事情,您可以将docx的JAXB表示操作到您的内心.JAXB是Java社区标准,包含在Java 6中,并且在EclipseLink的MOXy中具有强大的替代实现.(POI使用XML Bean而不是JAXB)

有一个Web应用程序可以帮助您浏览docx,并生成Java代码来创建相应的Java对象.

当然,如果您有一些特定的任务,那可能是docx4j或POI在那里具有特殊的优势.

docx4j和POI都是ASL v2许可的.

docx4j得到积极维护; 它的源代码在GitHub上.

此外,如果您需要,可以使用docx4j的商业支持,例如MergeDocx等几个商业扩展.

docx4j不依赖于POI作为一个库及其实施的OLE 2复合文档格式,这是我们自己感激.


小智 5

我认为 Apache POI 的主要重点是处理电子表格,尽管我具有读取 Word 文档的功能,并且它使用 xml beans 来执行此操作。Docx4j主要使用jaxb处理docx文档。通常 jaxb 允许 xml 到 java 对象转换,因此我认为 docx4j 更适合您的情况。