這裏是我的代碼:使用'替換()`方法不存在於Apache POI替換文本
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
public class POI {
public POI() throws IOException, InvalidFormatException
{
XWPFDocument doc = new XWPFDocument(OPCPackage.open("input.docx"));
for (XWPFParagraph p : doc.getParagraphs()) {
for (XWPFRun r : p.getRuns()) {
String text = r.getText(0);
System.out.println(text);
if (text.contains("needle"))
{
text = text.replace("needle", "haystack");
r.setText(text);
System.out.println(text);
}
}
}
doc.write(new FileOutputStream("output.docx"));
}
}
這個代碼意味着.docx
文件替換文本。我輸入到程序input.docx
,它包含以下數據
needle
game
system
我的產量爲output.docx
,它包含以下數據
needlehaystack
game
system
你可以看到區別。它只是在needle
旁邊加上haystack
,而不是用needle
替換haystack
。
我不知道我在做什麼錯在這裏。如何正確替換.docx
文件中的文本?
你可以試試這個在您的替換所有PLZ? 「^ needle \\ w +」 – 2014-09-24 18:26:16
@KickButtowski:現在輸出的是'needleneedle'而不是'needlehaystack'這是以前的輸出。 – 2014-09-24 18:28:54