我在我的項目中使用了此示例。一切都很好,並且替換文本也很好,但是在我的輸出文本文件中,應該是「居中」的,已經左對齊了。輸入文件 - .doc,我覺得這是打破文件的格式,但我不知道問題是什麼。如何解決這個問題?.doc文件中Apache-POI格式的文本問題
public class HWPFTest {
public static void main(String[] args){
String filePath = "F:\\Sample.doc";
POIFSFileSystem fs = null;
try {
fs = new POIFSFileSystem(new FileInputStream(filePath));
HWPFDocument doc = new HWPFDocument(fs);
doc = replaceText(doc, "$VAR", "MyValue1");
saveWord(filePath, doc);
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
private static HWPFDocument replaceText(HWPFDocument doc, String findText, String replaceText){
Range r1 = doc.getRange();
for (int i = 0; i < r1.numSections(); ++i) {
Section s = r1.getSection(i);
for (int x = 0; x < s.numParagraphs(); x++) {
Paragraph p = s.getParagraph(x);
for (int z = 0; z < p.numCharacterRuns(); z++) {
CharacterRun run = p.getCharacterRun(z);
String text = run.text();
if(text.contains(findText)) {
run.replaceText(findText, replaceText);
}
}
}
}
return doc;
}
private static void saveWord(String filePath, HWPFDocument doc) throws FileNotFoundException, IOException{
FileOutputStream out = null;
try{
out = new FileOutputStream(filePath);
doc.write(out);
}
finally{
out.close();
}
}
}
我認爲你可以使用docx文件 - 解壓縮它,替換內容和回拉。我個人是爲ods/odt文件做的。 – user1516873 2014-09-10 14:01:05
@ user1516873在POI項目獲得了docx的牽引之前,我開發了一個使用POI項目的自定義docx相關部件。 DOCX格式中有一些微妙之處,簡單的內容替換就會破壞事物。當然,在很多情況下它都可以工作,但是如果需要確保它可以工作,就需要付出額外的努力。 – 2014-09-11 20:13:23
@RainerSchwarze我會記下這件事,謝謝。對於OpenOffice格式,我沒有這樣的問題。 – user1516873 2014-09-12 07:12:15