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

时间:2013-02-21 22:57:29

标签: java apache-poi docx docx4j

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

换句话说,

哪个库支持大多数单词标签?

4 个答案:

答案 0 :(得分:21)

披露:我领导docx4j项目

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

无论您想对docx文档做什么,docx4j都应该能够为您提供帮助。有一个single page overview通用工作流程。

对于许多常见要求,docx4j提供更高级别的API。其中包括:

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

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

  • 导出为HTML,XHTML

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

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

有一个web app可以帮助您浏览docx,并生成Java代码来创建相应的Java对象。

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

docx4j和POI都是ASL v2许可。

docx4j得到积极维护;其源代码为on GitHub

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

docx4j确实依赖POI作为OLE 2复合文档格式its implementation的库,我们对此表示感谢。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

如果您正在处理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