gpt4 book ai didi

java - 在 XWPFDocument 中的段落内插入换行符

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:46 29 4
gpt4 key购买 nike

我正在使用 apache poi 3.8 将值写入 word 模板。我用所需的值替换单词文件(键)中的特定字符串,例如word文档有一段包含key %Entry1%,我想用“Entry text line1\nnew line”替换它。在我的实现中,所有替换的键和值都存储在 Map 中。

Map<String, String> replacedElementsMap;

HWPFDocument 的代码是:

Range range = document.getRange();
for(Map.Entry<String, String> entry : replacedElementsMap.entrySet()) {
range.replaceText(entry.getKey(), entry.getValue());
}

这段代码工作正常,我只需要将\n 放在输入字符串中作为换行符。但是我找不到 XWPFDocument 的类似方法。我当前的 XWPFDocument 代码是:

List<XWPFParagraph> xwpfParagraphs = document.getParagraphs();
for(XWPFParagraph xwpfParagraph : xwpfParagraphs) {
List<XWPFRun> xwpfRuns = xwpfParagraph.getRuns();
for(XWPFRun xwpfRun : xwpfRuns) {
String xwpfRunText = xwpfRun.getText(xwpfRun.getTextPosition());
for(Map.Entry<String, String> entry : replacedElementsMap.entrySet()) {
if (xwpfRunText != null && xwpfRunText.contains(entry.getKey())) {
xwpfRunText = xwpfRunText.replaceAll(entry.getKey(), entry.getValue());
}
}
xwpfRun.setText(xwpfRunText, 0);
}
}

现在,“\n”字符串不会导致回车,如果我使用 xwpfRun.addCarriageReturn();,我只会在段落后换行。我应该如何在 xwpf 中正确地创建新行?

最佳答案

我有另一个解决方案,它更简单:

            if (data.contains("\n")) {
String[] lines = data.split("\n");
run.setText(lines[0], 0); // set first line into XWPFRun
for(int i=1;i<lines.length;i++){
// add break and insert new text
run.addBreak();
run.setText(lines[i]);
}
} else {
run.setText(data, 0);
}

关于java - 在 XWPFDocument 中的段落内插入换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14830667/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com