admin管理员组文章数量:1122850
在poi操作word模板进行数据替换时,会存在替换的段落需要换行的情况,由于传入的都是字符串,之前在网上搜索过一些处理方法都没有效果,如给字符串添加:“\r”,“\r\n”,"\n","char(11)。"然后只有考虑从代码层次解决这个问题了,实现的代码如下
在传入的字符串以“\r\n”为分段标志
MaptestMap = new HashMap();
String requireStr = "测试需求是主要是整理测试焦点(包括一些界面、输入域、业务流程)";
requireStr+="\r\n可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="\r\n可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
requireStr+="可以说,测试需求是告诉你要测什么,而测试用例是告诉你怎么测。";
testMap.put("require", requireStr);
在代码中进行分解判断
//获取段落集合
Listparagraphs = document.getParagraphs();
for (XWPFParagraph paragraph : paragraphs) {
//判断此段落时候需要进行替换
String text = paragraph.getText();
if(checkText(text)){
Listruns = paragraph.getRuns();
for (XWPFRun run : runs) {
//替换模板原来位置
String value = changeValue(run.toString(), textMap);
//分段显示的情况
String[] values = value.split("\r\n");
if(values.length > 1) {
run.setText(values[0],0);
for (int i = 1; i < values.length; i++) {
//存在分段则新建一个run
XWPFRun newrun = paragraph.insertNewRun(i);
//copy样式
newrun.getCTR().setRPr(run.getCTR().getRPr());
//换行
newrun.addBreak();
//缩进
newrun.addTab();
newrun.setText(values[i]);
}
break;
}else {
run.setText(value,0);
}
}
}
}
效果如下:
版权声明:本文标题:java word模板替换多行_java poi word模板替换段落的换行显示 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1726310329a1071028.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论