Hallo!
Ich möchte gerne eine Worddatei einlesen und Schlüsselwerte ersetzen.
Bisher habe ich das so gemacht, dass ich einfach mit dem xml-Format gearbeitet habe.
(Bei Word 2003 kann man Dateien so speichern)
Dies ist jetzt aber leider nicht mehr möglich (Wordversion<2003 ).
Ich muss also an das doc-Format ran. (RTF kommt nicht in Frage, weil mir eine 200kb große Worddatei auf 21MB aufgebläht wurde!)
Dafür habe ich mir das POI Projekt angeschaut und versucht etwas zu verstehen.
Hier etwas Code:
Das Problem ist: Die Methode InsertAfter funktioniert tadellos! Nur sobald ich die replace-Methode benutze, kann ich die erzeugte Datei nicht mehr mit Word öffnen!
Also etwa so:
Vielleicht hat von euch ja jemand Ahnung, wie ich das hinbekommen könnte..
(Ich habe auch schon mal nach der Open Office API gesucht als Alternative, aber die Seite verwirrt mich, ich finde irgendwie gar keine Infos darüber)
Gruß,
Sven
Ich möchte gerne eine Worddatei einlesen und Schlüsselwerte ersetzen.
Bisher habe ich das so gemacht, dass ich einfach mit dem xml-Format gearbeitet habe.
(Bei Word 2003 kann man Dateien so speichern)
Dies ist jetzt aber leider nicht mehr möglich (Wordversion<2003 ).
Ich muss also an das doc-Format ran. (RTF kommt nicht in Frage, weil mir eine 200kb große Worddatei auf 21MB aufgebläht wurde!)
Dafür habe ich mir das POI Projekt angeschaut und versucht etwas zu verstehen.
Hier etwas Code:
Java:
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hwpf.usermodel.CharacterProperties;
import java.io.*;
public class readDoc {
public static void main(String[] args) {
try {
HWPFDocument doc = new HWPFDocument(new FileInputStream("C:\\Test.doc"));
Range range = doc.getRange();
range.insertAfter("TEST");
OutputStream out = new FileOutputStream("C:\\Write.doc");
doc.write(out);
out.flush();
out.close();
} catch (Throwable t) {
javax.swing.JOptionPane.showMessageDialog(null,t.getMessage());
}
}
}
Das Problem ist: Die Methode InsertAfter funktioniert tadellos! Nur sobald ich die replace-Methode benutze, kann ich die erzeugte Datei nicht mehr mit Word öffnen!
Also etwa so:
Java:
range.replaceText("#Datum#", new java.text.SimpleDateFormat("dd.MM.yyy").format(new java.util.Date()));
Vielleicht hat von euch ja jemand Ahnung, wie ich das hinbekommen könnte..
(Ich habe auch schon mal nach der Open Office API gesucht als Alternative, aber die Seite verwirrt mich, ich finde irgendwie gar keine Infos darüber)
Gruß,
Sven