java word模板替换多行_java poi word模板替换段落的换行显示

这篇博客介绍了如何使用Java的POI库处理Word模板时,实现数据替换并保持段落的换行显示。通过在传入的字符串中以' '作为分隔符,然后在代码中遍历段落和文本运行,根据分隔后的多个值创建新的运行(run),设置相应的样式和缩进,从而达到多行显示的效果。
摘要由CSDN通过智能技术生成

在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);

}

}

}

}

效果如下:

1f1cf6944b61907b213b12d459ecdc38.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值