Java POI可以将图像写入Word文档吗?

时间:2020-03-06 14:39:01  来源:igfitidea点击:

有人知道这是否可能吗?
并为此获得了任何示例代码?
或者任何其他可以做到这一点的Java API?

解决方案

从项目网站上可以收集到的信息:不可以。

Office 2007格式基于XML,因此可以使用XML工具写入。但是,该库声称可以编写DocX格式的Word文档。

唯一的其他选择是使用Java-COM Bridge并使用COM来操纵单词。尽管我建议找到一种更简单的方法,但这可能不是一个好主意。

例如,Word可以轻松读取RTF文档,并且可以从Java内部生成.rtf文档。我们不必使用Microsoft Word格式!

POI的HWPF可以提取MS Word文档的文本并执行简单的修改(基本上是删除和插入文本)。
据我所知,它不能做的更多。
还请记住,HWPF仅适用于较旧的MS Word(97)格式,不适用于最新的格式。

不知道Java是否可以直接使用。但是我已经读过一个组件,该组件在没有Word的情况下几乎可以自动完成Word文档生成。假话

正如其他人所说,POI不允许我们做任何真正想做的事情,而且它不支持Office 2007+格式。将MS Word视为通过COM提供此类功能的组件很可能是此处的最佳方法(除非我们在非Windows操作系统上运行,或者不能保证将Word安装在计算机上)。

如果我们确实要使用COM路由,建议我们研究一下JACOB项目。我们确实需要对COM有所了解(学习曲线非常陡峭),但是该库运行良好,并且比尝试使用JNI包装器在本机代码中进行操作更容易。

如果我们使用的是docx,则可以尝试docx4j。

请参见AddImage示例

JasperReports使用此API替代POI,因为它支持图像:
JExcelAPI

我还没有尝试过,也不知道它有多好/不好。

一定:

看一下这个:http://code.google.com/p/java2word

Word 2004+是基于XML的。上面的框架获取图像,转换为Base64表示形式并将其添加到XML。
当我们打开Word文档时,将出现图像。

像这样简单:

IDocument myDoc = new Document2004();   
    myDoc.getBody().addEle("path/myImage.png"));

Java2Word是一种使用明显的Java代码生成Word Docs的API。 J2W负责幕后的所有实现和XML生成。