如何追加两个word文档的内容?

时间:2016-02-02 07:28:19

标签: java file ms-word

阅读word文档,例如 SampleOne.doc 并将其存储到byte[]

@Column(name = "LETTER_WORD_EDITOR_VALUE")
private byte[] letterWordEditorValue;

数据库中的blob

我想将示例 SampleTwo.doc 的另一个word文档的内容读作byte[]并附加byte[]并将结果byte[]设置为到letterWordEditorValue

以下是执行该操作的代码。

 FileInputStream fileRead = new FileInputStream(fileNameWithPath);

 byte[] readData=IOUtils.toByteArray(fileRead);
 byte[] one = readData;

 byte[] two = inquiryCor.getLetterWordEditorValue();
 byte[] combined = new byte[one.length + two.length];

 System.arraycopy(one,0,combined,0,one.length);
 System.arraycopy(two,0,combined,one.length,two.length);

 inquiryCor.setLetterWordEditorValue(combined);

以下是阅读letterWordEditorValue并写入Word文件的代码。

fileEditOutPutStream = new FileOutputStream(fileNameWithPath);                               
fileEditOutPutStream.write(inquiryCor.getLetterWordEditorValue());
fileEditOutPutStream.close();

word文件的内容不是one + two的内容,而是仅包含readData值。但是,当打印combined.length i.e resultant length时,打印的总和为 one.length + two.length

为什么上面的代码不附加两个word文档的内容?

我做错了什么?请指导我解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:2)

通过简单的bytearray-concatenation组合两个专有文档是不可能的。这甚至没有任何意义。您需要通过某个库解析这两个文档并手动将它们放在一起。你试图做的就是试着通过将第二辆汽车连接到第一辆汽车而在一辆汽车内部使用两个电机......不计算!

Apache为办公文档提供了一个库:https://poi.apache.org/

答案 1 :(得分:-1)

替换

fileEditOutPutStream.write(inquiryCor.getLetterWordEditorValue());

fileEditOutPutStream.write(inquiryCorrespondence.getLetterWordEditorValue());