最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

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

业界 admin 11浏览 0评论

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

}

}

}

}

效果如下:

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

}

}

}

}

效果如下:

发布评论

评论列表 (0)

  1. 暂无评论