Cómo encontrar y reemplazar texto en archivos de Word tanto doc como docx

Quiero encontrar y reemplazar texto usando Java en formato doc y archivos en formato docx usando Java.

Lo que probé: intenté leer esos archivos como archivos de texto pero no tuve éxito.

No tengo idea de cómo proceder o qué más intentar, ¿alguien puede darme instrucciones?

Respuesta 1

Espero que esto resuelva tu problema, amigo. Lo escribí para que docx busque y reemplace usando apache.poi. Le recomiendo que lea el PDI completo de Apache para obtener más información.

public class Find_Replace_DOCX {

     public static void main(String args[]) throws IOException,
       InvalidFormatException,
       org.apache.poi.openxml4j.exceptions.InvalidFormatException {
      try {

       /**
        * if uploaded doc then use HWPF else if uploaded Docx file use
        * XWPFDocument
        */
       XWPFDocument doc = new XWPFDocument(
         OPCPackage.open("d:\\1\\rpt.docx"));
       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 && text.contains("$$key$$")) {
           text = text.replace("$$key$$", "ABCD");//your content
           r.setText(text, 0);
          }
         }
        }
       }

       for (XWPFTable tbl : doc.getTables()) {
        for (XWPFTableRow row : tbl.getRows()) {
         for (XWPFTableCell cell : row.getTableCells()) {
          for (XWPFParagraph p : cell.getParagraphs()) {
           for (XWPFRun r : p.getRuns()) {
            String text = r.getText(0);
            if (text != null && text.contains("$$key$$")) {
             text = text.replace("$$key$$", "abcd");
             r.setText(text, 0);
            }
           }
          }
         }
        }
       }

       doc.write(new FileOutputStream("d:\\1\\output.docx"));
      } finally {

      }

     }

    }
Respuesta: 2

Estoy tratando de mostrar un git diff entre dos confirmaciones para un archivo. Básicamente, lo hice como en https: //github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain / ...

¿Podría decirme por favor? ¿Es una práctica normal escribir un método (ejemplo: Prueba JUnit) que arroje una Excepción, por ejemplo: clase A {public String f (int param) lanza Exception {if (...

Tengo un extraño error que aparece cada vez que quiero implementar mi aplicación. Estoy usando IntelliJ IDEA 2016.3. Mi aplicación es una aplicación Java WEB que utiliza JSF, EJB y JPA (Hibernate). Todas las librerías eran ...

Tengo un índice con el nombre de demo y contiene diferentes tipos. Estoy usando la API interna de búsqueda elástica de Java y la API de descanso las dos en mi aplicación. Básicamente quiero hacer esta solicitud curl -...