Last active
April 21, 2021 14:58
-
-
Save Olbergx/6ce9d3272a715de966da0d3585b917bd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
try{ | |
String filepath = "createparagraph.docx"; | |
String outpath = "createparagraph4.docx"; | |
XWPFDocument doc = new XWPFDocument(OPCPackage.open(filepath)); | |
for (XWPFParagraph p : doc.getParagraphs()) { | |
for (XWPFRun r : p.getRuns()) { | |
String text = r.toString(); | |
if (text.contains("#ADDRESS#")) { | |
text = text.replace("#ADDRESS#", jTextField1.getText()); | |
r.setText(text,0); | |
} | |
} | |
} | |
doc.write(new FileOutputStream(outpath)); | |
Runtime.getRuntime().exec("cmd /C " + (System.getProperty("user.dir").replaceAll("\\\\", "/")) + "/" + outpath); | |
System.out.println("Done"); | |
}catch(Exception e){ | |
JOptionPane.showMessageDialog(null, e); | |
} | |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
String filepath = "path\docx"; | |
String outpath = "path\docx"; | |
XWPFDocument doc = new XWPFDocument(OPCPackage.open(filepath)); | |
for (XWPFParagraph p : doc.getParagraphs()) { | |
for (XWPFRun r : p.getRuns()) { | |
String text = r.toString(); | |
if (text.contains("Subsea")) { | |
text = text.replace("Subsea", "Surface"); | |
r.setText(text); | |
} | |
+++++++++++++++++++++++ | |
import java.io.*; | |
import org.apache.poi.openxml4j.opc.OPCPackage; | |
import org.apache.poi.xwpf.extractor.XWPFWordExtractor; | |
import org.apache.poi.xwpf.usermodel.XWPFDocument; | |
import org.apache.poi.xwpf.usermodel.XWPFParagraph; | |
import org.apache.poi.xwpf.usermodel.XWPFRun; | |
public class testPOI { | |
public static void main(String[] args) throws Exception{ | |
String filepath = "F:\\MASTER_DOC.docx"; | |
String outpath = "F:\\Test.docx"; | |
XWPFDocument doc = new XWPFDocument(OPCPackage.open(filepath)); | |
for (XWPFParagraph p : doc.getParagraphs()){ | |
for (XWPFRun r : p.getRuns()){ | |
String text = r.toString(); | |
if(text.contains("test")) { | |
text = text.replace("test", "DOG"); | |
r.setText(text); | |
} | |
} | |
} | |
doc.write(new FileOutputStream(outpath)); | |
} | |
+++++++++++++++++++++++++++++++++ | |
public class testPOI { | |
public static void main(String[] args) throws Exception{ | |
String filepath = "F:\\MASTER_DOC.docx"; | |
String outpath = "F:\\Test.docx"; | |
XWPFDocument doc = new XWPFDocument(new FileInputStream(filepath)); | |
for (XWPFParagraph p : doc.getParagraphs()){ | |
int numberOfRuns = p.getRuns().size(); | |
// Collate text of all runs | |
StringBuilder sb = new StringBuilder(); | |
for (XWPFRun r : p.getRuns()){ | |
int pos = r.getTextPosition(); | |
if(r.getText(pos) != null) { | |
sb.append(r.getText(pos)); | |
} | |
} | |
// Continue if there is text and contains "test" | |
if(sb.length() > 0 && sb.toString().contains("test")) { | |
// Remove all existing runs | |
for(int i = 0; i < numberOfRuns; i++) { | |
p.removeRun(i); | |
} | |
String text = sb.toString().replace("test", "DOG"); | |
// Add new run with updated text | |
XWPFRun run = p.createRun(); | |
run.setText(text); | |
p.addRun(run); | |
} | |
} | |
doc.write(new FileOutputStream(outpath)); | |
} | |
} | |
++++++++++++++++ | |
private long replaceInParagraphs(Map<String, String> replacements, List<XWPFParagraph> xwpfParagraphs) { | |
long count = 0; | |
for (XWPFParagraph paragraph : xwpfParagraphs) { | |
List<XWPFRun> runs = paragraph.getRuns(); | |
for (Map.Entry<String, String> replPair : replacements.entrySet()) { | |
String find = replPair.getKey(); | |
String repl = replPair.getValue(); | |
TextSegement found = paragraph.searchText(find, new PositionInParagraph()); | |
if ( found != null ) { | |
count++; | |
if ( found.getBeginRun() == found.getEndRun() ) { | |
// whole search string is in one Run | |
XWPFRun run = runs.get(found.getBeginRun()); | |
String runText = run.getText(run.getTextPosition()); | |
String replaced = runText.replace(find, repl); | |
run.setText(replaced, 0); | |
} else { | |
// The search string spans over more than one Run | |
// Put the Strings together | |
StringBuilder b = new StringBuilder(); | |
for (int runPos = found.getBeginRun(); runPos <= found.getEndRun(); runPos++) { | |
XWPFRun run = runs.get(runPos); | |
b.append(run.getText(run.getTextPosition())); | |
} | |
String connectedRuns = b.toString(); | |
String replaced = connectedRuns.replace(find, repl); | |
// The first Run receives the replaced String of all connected Runs | |
XWPFRun partOne = runs.get(found.getBeginRun()); | |
partOne.setText(replaced, 0); | |
// Removing the text in the other Runs. | |
for (int runPos = found.getBeginRun()+1; runPos <= found.getEndRun(); runPos++) { | |
XWPFRun partNext = runs.get(runPos); | |
partNext.setText("", 0); | |
} | |
} | |
} | |
} | |
} | |
return count; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment