我正在尝试在单词doc中找到值if (process.env.NODE_ENV === 'dev') {
// Your dev-only logic goes here
}
,并用Java程序中的数据数组替换。我要替换的数据是
.......
$beta
我通过使用以下语法中的print语句验证这是正确的。但是,当我在保存代码后打开Word文档时,仅是最后一个值Blue - 33 - 100
Blue - 28 - 75
Blue - 30 - 90
在Word文档中,而不是像我上面的代码中一样,所有3个值彼此堆叠。
就像上面的示例一样,这就是当我希望代码被替换为java语法时,如何将其显示在word文档中。该如何读取代码才能实现这一目标?
Blue - 30 - 90
编辑
我按照答案中的代码建议进行操作,并使用下面的语法,在Java方面,该数据可以按需要打印数据,但是一旦写成文字,所有数据都在一行上,而不是像我一样在单独一行上欲望
public static void Test() {
String valuetowrite = null;
for (SPData data : qryresults) {
valuetowrite = String.join("\r\n", data.toString());
System.out.println(valuetowrite);
}
try {
XWPFDocument doc = new XWPFDocument(OPCPackage.open(SOURCE_FILE));
for (XWPFParagraph p : doc.getParagraphs()) {
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null) {
if (text.contains("$beta")) {
text = text.replace("$beta", valuetowrite);
r.setText(text, 0);
}
}
}
}
}
doc.write(new FileOutputStream(OUTPUT_FILE));
} catch (Exception ex) {
ex.printStackTrace();
}
}
答案 0 :(得分:2)
尝试下面的代码,它使用的是r.addBreak();
,它将根据需要添加一个换行符。
private static void WriteToWordWithLineBreak() {
ArrayList<String> datatowrite = new ArrayList<String>();
for (SPData data : qryresults) {
datatowrite.add(data.toString());
}
try {
XWPFDocument doc = new XWPFDocument(OPCPackage.open(SOURCE_FILE));
for (XWPFParagraph p : doc.getParagraphs()) {
System.out.println("Found paragraph "+p);
List<XWPFRun> runs = p.getRuns();
if (runs != null) {
for (XWPFRun r : runs) {
String text = r.getText(0);
if (text != null) {
if (text.contains("$beta")) {
r.setText(datatowrite.get(0), 0);
for (int i=1; i < datatowrite.size(); i++){
r.addBreak();
r.setText(datatowrite.get(i));
}
}
}
}
}
}
doc.write(new FileOutputStream(OUTPUT_FILE));
} catch (Exception ex) {
ex.printStackTrace();
}
}
答案 1 :(得分:0)
尝试一下:
String valuetowrite = "";
for (SPData data : qryresults) {
valuetowrite = valuetowrite + String.join("\r\n", data.toString());
}
System.out.println(valuetowrite);