Apache POI或docx4j用于处理docx文档

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

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

披露:我领导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复合文档格式的库,我们对此表示感谢。

我认为Apache POI的主要重点是处理电子表格,虽然我有阅读word文档的function,它使用xml bean来实现。 Docx4j主要使用jaxb处理docx文档。 通常jaxb允许xml到java对象转换,因此我认为docx4j更适合你的情况。

我尝试过Apache POI,但问题是从docx文件打印任何内容时(例如:要从docx打印所有“Heading1”元素),它会打印出大量不良数据和空白。 Docx4j会避免这些不良数据,我试过了。

如果您正在处理docx文档,docx4j比Apache POI更方便。 您可以使用以下链接来学习docx4j的基础知识。 此外,还有一个很好的docx4j论坛。

1. http://blog.iprofs.nl/2012/09/06/creating-word-documents-with-docx4j/ 2. http://www.smartjava.org/content/create-complex-word-docx- documents-programatically-docx4j ?