我正在使用Apache POI Word在Java中创建docx文件。
现在我正在使用以下代码
XWPFDocument document = new XWPFDocument();
XWPFParagraph tmpParagraph = document.createParagraph();
XWPFRun tmpRun = tmpParagraph.createRun();
tmpRun.setText(newDocxData);
try {
document.write(new FileOutputStream(new File("C:\\test.docx")));
} catch (FileNotFoundException ex) {
Logger.getLogger(PersonnelFileHandlingStreamAttributesHandlerImpl.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(PersonnelFileHandlingStreamAttributesHandlerImpl.class.getName()).log(Level.SEVERE, null, ex);
}
但是这将整个文本放在一个段落下。
但是我想将给定的字符串原样放入文档中。
我尝试将字符串转换为输入流,并在创建文档时将其传递
XWPFDocument document = new XWPFDocument(inputstream);
但是它也会给出一个错误。有什么解决办法吗?
这是我要编写的字符串的示例。
10-伊利诺伊州绍姆堡-美国xxx 2018-06-28
就业证明
这是为了证明John当前在xxx担任经理。
John从00年12月7日开始在xxx工作。
当前薪水为每月SalaryPerMonth SalaryCurrencyCode,正在工作 每周40小时的100%。
答案 0 :(得分:1)
这里的问题是您要检索一个字符串中的所有文本。您应该使用“ getBodyElements”解析文档中的所有body元素,然后遍历所有这些元素并为每个元素启动一个段落。这是如何执行此操作的示例:
public static XWPFDocument MergeDocument(XWPFDocument source, XWPFDocument output){
for(IBodyElement element : source.getBodyElements()) {
if(element instanceof XWPFParagraph) {
XWPFParagraph paragraph = (XWPFParagraph)element;
if(paragraph.getStyleID()!=null){
XWPFStyles styles= output.createStyles();
XWPFStyles stylesdoc2= source.getStyles();
styles.addStyle(stylesdoc2.getStyle(paragraph.getStyleID()));
}
XWPFParagraph x= output.createParagraph();
x.setStyle(((XWPFParagraph) element).getStyle());
XWPFRun runx=x.createRun();
runx.setText(((XWPFParagraph) element).getText());
}
}
return output;
}