Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Microsoft Word中查找文本并替换为Java字符串数组_Java_Replace_Ms Word_Apache Poi - Fatal编程技术网

在Microsoft Word中查找文本并替换为Java字符串数组

在Microsoft Word中查找文本并替换为Java字符串数组,java,replace,ms-word,apache-poi,Java,Replace,Ms Word,Apache Poi,我试图在word文档中找到值$beta,并用java程序中的数据数组替换。我要替换的数据是 我使用下面语法中的print语句来验证这一点是否准确。但是,当我在code保存word文档后打开它时,只有最后一个值Blue-30-90在word文档中,而不是像我在上面的代码帖子中那样,所有3个值彼此堆叠在一起 就像我上面的例子一样,这是我希望代码在被java语法替换时出现在word文档中的方式。代码应该如何读取才能实现这一点 public static void Test() { Strin

我试图在word文档中找到值
$beta
,并用java程序中的数据数组替换。我要替换的数据是

我使用下面语法中的print语句来验证这一点是否准确。但是,当我在code保存word文档后打开它时,只有最后一个值
Blue-30-90
在word文档中,而不是像我在上面的代码帖子中那样,所有3个值彼此堆叠在一起

就像我上面的例子一样,这是我希望代码在被java语法替换时出现在word文档中的方式。代码应该如何读取才能实现这一点

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();
    }
}
试试这个:

String valuetowrite = "";
for (SPData data : qryresults) {
    valuetowrite = valuetowrite + String.join("\r\n", data.toString());
}
System.out.println(valuetowrite);

尝试下面的代码,它正在使用
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();
    }
}
private static void WriteToWordWithLineBreak(){
ArrayList datatowrite=新的ArrayList();
用于(SPData数据:qryresults){
datatowrite.add(data.toString());
}
试一试{
XWPFDocument doc=新的XWPFDocument(OPCPackage.open(SOURCE_文件));
对于(XWPFParagraph p:doc.getparagraph()){
系统输出打印项次(“找到段落”+p);
List runs=p.getRuns();
如果(运行!=null){
用于(XWPFRun r:运行){
String text=r.getText(0);
如果(文本!=null){
if(text.contains(“$beta”)){
r、 setText(datatowrite.get(0),0);
对于(int i=1;i
Word不理解\r\n-请参阅此处的线程,看看它是否能帮助您解决问题。我正在向word一次性写入一个数据列表,因此我无法像您发布的墨迹那样添加新段落。
String valuetowrite = "";
for (SPData data : qryresults) {
    valuetowrite = valuetowrite + String.join("\r\n", data.toString());
}
System.out.println(valuetowrite);
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();
    }
}