I für bestimmte Platzhalter suchen möge, und ersetzen Sie es mit Text in Word-Vorlage mit Apache Poi mit JAVA, ich möchte etwas einfach nicht auf allen Tabellen, Zeilen, Zellen in einer Schleife und führt zu Suche nach jedem darin enthaltenen Text.Apache POI - Suche nach Platzhalter in Word-Dokument
Antwort
Werfen Sie einen Blick auf mein Projekt https://github.com/centic9/poi-mail-merge, die bereits etwas ähnliches tut.
Es ruft im Grunde eine XML-Repräsentation des Word-Dokument, wird der Ersatz und legt das Ergebnis wieder in das Dokument ein.
I.e. etwas wie
CTBody body = doc.getDocument().getBody();
XmlOptions optionsOuter = new XmlOptions();
optionsOuter.setSaveOuter();
// read the current full Body text
String srcString = body.xmlText();
... do the replacements in srcString
XmlOptions optionsOuter = new XmlOptions();
optionsOuter.setSaveOuter();
String srcString = src.xmlText();
String prefix = srcString.substring(0,srcString.indexOf(">")+1);
final String mainPart;
// exclude template itself in first appending
if(first) {
mainPart = "";
} else {
mainPart = srcString.substring(srcString.indexOf(">")+1,srcString.lastIndexOf("<"));
}
String sufix = srcString.substring(srcString.lastIndexOf("<"));
String addPart = append.substring(append.indexOf(">") + 1, append.lastIndexOf("<"));
CTBody makeBody = CTBody.Factory.parse(prefix+mainPart+addPart+sufix);
src.set(makeBody);
Beachten Sie, dass die Implementierung verwechselt wird, wenn der Austausch über mehrere Formatierungen, z. Wenn ein Teil des Ersetzungs-Tags fett gedruckt ist, ist dies in der Art und Weise, wie es funktioniert, inhärent.
Vielen Dank für Ihre Antwort, es war hilfreich, aber Sie haben keine Technik zu entfernen spezifische Tabelle (Abschnitt) im Dokument hat $ Platzhalter bekannt. –
- 1. Lernen Apache POI
- 2. Apache-POI
- 3. Apache poi Seitenumbrüche
- 4. Apache POI und Dateilöschungsklasse
- 5. Apache POI Leistung
- 6. Apache POI Währungsdatenformat
- 7. Excel Java Apache Poi
- 8. Apache POI Word-Tutorial.
- 9. Pattern mit Apache poi
- 10. Apache POI Bild einfügen
- 11. Apache POI Parsing Fehler
- 12. Suche nach einer Datei mit einem Platzhalter
- 13. XSSF Apache POI XSSFCellStyle
- 14. Apache poi Zentrum ausrichten
- 15. Suche nach Apache Build-Optionen
- 16. Apache POI getStringCellValue (Druck) null
- 17. Suche nach Schlüssel in Apache CouchDB
- 18. Null Zeiger Ausnahme Apache Poi
- 19. Apache POI Excel Tabelle-TotalsRow
- 20. Suche nach einzelnen Dateinamen, wenn mehrere Dateien in Apache Spark
- 21. Apache POI CellStyle wird nicht angewendet
- 22. Apache POI SXSSF und XSSF
- 23. Standalone-Jython: Importfehler (Apache-POI)
- 24. Apache POI: SXSSFWorkbook.dispose() existiert nicht
- 25. Shading Zellen mit Apache POI
- 26. xlsx lesen durch apache poi
- 27. Apache-Poi Wort und Intellij
- 28. Apache poi Stil Einstellung stoppt nach einer Weile
- 29. Öffnen Sie EXISTING xls in Apache POI
- 30. Direkte Adressierung von Zelle in Apache POI
Könnten Sie einige Beispieldaten und den Code hinzufügen? PS: Ich denke, es gibt keine einfachere Lösung, als Gedankenzellen zu iterieren. EDIT: gefunden [diese Frage] (http://stackoverflow.com/questions/3618763/find-excel-cell-by-text-in-apache-poi), die Sie – edasssus
für (XWPFTable Tabl helfen könnte: doc. getTables()) { für (XWPFTableRow Reihe: tbl.getRows()) { \t für (XWPFTableCell Zelle: row.getTableCells()) { \t \t für (XWPFParagraph p: cell.getParagraphs()) { \t \t for (XWPFRun r: p.getRuns()) { \t \t String text = r.getText (0); \t \t if (Text! = Null && (text.equalsIgnoreCase ("$ Kommentar"))) { // do something} }}}} –