Encuentre texto en Microsoft Word y reemplácelo con Java String Array

Estoy tratando de encontrar el valor $betaen mi palabra doc y reemplazarlo con una matriz de datos de mi programa java. Los datos que quiero reemplazar son .......

Blue - 33 - 100
Blue - 28 - 75
Blue - 30 - 90

Verifico que esto es exacto usando la declaración de impresión en la sintaxis a continuación. Sin embargo, cuando abro mi documento de Word después de que el código lo guarda, SOLO el último valor Blue - 30 - 90está en el documento de Word, no todos los 3 se apilan entre sí como lo he hecho en mi publicación de código anterior.

Al igual que en mi ejemplo anterior, así es como quiero que aparezca el código en el documento de Word cuando se reemplaza con la sintaxis de Java. ¿Cómo debe leerse el código para que eso suceda?

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();
    }
}

EDITAR
Sigo la sugerencia de código en la respuesta y uso la sintaxis a continuación que, en el lado JAVA de las cosas, tiene los datos impresos como se desea, pero una vez que están en palabras, todos los datos están en una línea, no cada una en una línea individual como Yo deseo

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

Pruebe el siguiente código, está utilizando el r.addBreak();que agregará un salto de línea como desee.

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();
    }
}
Respuesta: 2

Encontré un código para cerrar correctamente la aplicación Java desde la aplicación de consola C #, usando InputSimulator, pero cuando lo probé, no me dio el resultado esperado. Cuando cierro mi java ...

Soy algo nuevo en la visualización de gráficos en Java y estoy tratando de usar la biblioteca JFreeChart, actualmente tengo 2 matrices: 1st Array es una matriz de valores enteros. 2nd Array es un conjunto de fechas. ...

Estoy probando cómo causar java.net.NoRouteToHostException usando iptables. configure el lado del servidor de esta manera: sudo iptables -A INPUT -s 10.13.185.66 -j DROP sudo iptables -A INPUT -s 10.13.185.66 -j ...

Necesito integrar IBM Security Access Manger con Tomcat 9 para autenticar a los usuarios. Tengo un Webseal (unión) configurado correctamente para la parte SAM de IBM. Toma las credenciales del usuario, autentica ...