Apache POI库将多个Word文档合并为一个Word,批注内容为空
时间: 2024-03-10 12:44:52 浏览: 16
在使用Apache POI库将多个Word文档合并为一个Word文档时,批注内容为空的问题可能是因为没有正确地复制批注内容到目标Word文档中。以下是一个修改版的示例代码,它可以正确地复制批注内容:
```
import java.io.*;
import org.apache.poi.xwpf.usermodel.*;
public class MergeWordDocuments {
public static void main(String[] args) throws Exception {
String[] files = {"doc1.docx", "doc2.docx", "doc3.docx"};
XWPFDocument finalDoc = new XWPFDocument();
for (String file : files) {
XWPFDocument doc = new XWPFDocument(new FileInputStream(file));
for (XWPFParagraph para : doc.getParagraphs()) {
XWPFParagraph newPara = finalDoc.createParagraph();
newPara.createRun().setText(para.getText());
}
for (XWPFTable tbl : doc.getTables()) {
XWPFTable newTbl = finalDoc.createTable();
newTbl.getCTTbl().setTblPr(tbl.getCTTbl().getTblPr());
for (int i = 0; i < tbl.getRows().size(); i++) {
XWPFTableRow row = newTbl.getRow(i);
if (row == null) row = newTbl.createRow();
for (int j = 0; j < tbl.getRow(i).getTableCells().size(); j++) {
XWPFTableCell cell = row.getCell(j);
if (cell == null) cell = row.createCell();
cell.getCTTc().setTcPr(tbl.getRow(i).getCell(j).getCTTc().getTcPr());
for (XWPFParagraph para : tbl.getRow(i).getCell(j).getParagraphs()) {
XWPFParagraph newPara = cell.addParagraph();
newPara.createRun().setText(para.getText());
for (XWPFComment comment : para.getComments()) {
XWPFComment newComment = newPara.addNewComment();
newComment.setAuthor(comment.getAuthor());
newComment.setText(comment.getText());
}
}
}
}
}
}
FileOutputStream out = new FileOutputStream("finalDoc.docx");
finalDoc.write(out);
out.close();
finalDoc.close();
}
}
```
上述代码在复制段落、表格时,会同时复制批注内容。