charusheela
Grünschnabel
Hallo
ich muss mit Hilfe eines Programmes Word-Dateien editieren.
Um dies zu bewältigen habe ich mich für Apache POI entschieden.
Das Einfügen von Text am Ende des Dokuments und auch das ersetzen wenn das alte Wort und das neue Wort gleich lang sind klappt.
Wenn sie jedoch unterschiedlich lang sind wird eine Datei erstellt jedoch kann diese Datei nicht geöffnet werden. Es kommt die Fehlermeldung "Die Datei ist zu Umfangreich für Word"
Mit OpenOffice kann ich diese Problemlos öffnen. Nur leide bin ich gezungen das Programm für MS Office zu schreiben.
Hier ist nun der Programmauschnitt aus meinem Tool, der für das ersetztn zuständig ist-
Nun folgt der Code von Appache POI welcher aus meinem Tool aus aufgerufen wird
Findet ihr vlt den Fehler, ich habe schon alles durchforstet aber ich finde keine Lösung.
Vlt habt ihr auch Erfahrung mit anderen Package die für das Berarbeiten für Worddokumenten genutz werden kann.
Bin auch schon am Überlegen ob ich rtf nutze aber da habe ich keine geeigneten libs zum bearbeiten gefunden.
Vielen Dank im Voraus für eure Hilfe
ich muss mit Hilfe eines Programmes Word-Dateien editieren.
Um dies zu bewältigen habe ich mich für Apache POI entschieden.
Das Einfügen von Text am Ende des Dokuments und auch das ersetzen wenn das alte Wort und das neue Wort gleich lang sind klappt.
Wenn sie jedoch unterschiedlich lang sind wird eine Datei erstellt jedoch kann diese Datei nicht geöffnet werden. Es kommt die Fehlermeldung "Die Datei ist zu Umfangreich für Word"
Mit OpenOffice kann ich diese Problemlos öffnen. Nur leide bin ich gezungen das Programm für MS Office zu schreiben.
Hier ist nun der Programmauschnitt aus meinem Tool, der für das ersetztn zuständig ist-
Code:
HWPFDocument doc;
try {
doc = new HWPFDocument(new FileInputStream("C:\\Desktop\\Blubber.doc"));
Range range = doc.getRange();
range.replaceText("*Blubber*", "blub");
OutputStream out = new FileOutputStream("C:\\Desktop\\Blubber2.doc");
doc.write(out);
out.flush();
out.close();
Nun folgt der Code von Appache POI welcher aus meinem Tool aus aufgerufen wird
Code:
/**
* Replace (one instance of) a piece of text with another...
*
* @param pPlaceHolder
* The text to be replaced (e.g., "${organization}")
* @param pValue
* The replacement text (e.g., "Apache Software Foundation")
* @param pOffset
* The offset or index where the text to be replaced begins
* (relative to/within this <code>Range</code>)
*/
public void replaceText(String pPlaceHolder, String pValue, int pOffset) {
int absPlaceHolderIndex = getStartOffset() + pOffset;
Range subRange = new Range(absPlaceHolderIndex, (absPlaceHolderIndex + pPlaceHolder
.length()), getDocument());
// this Range isn't a proper parent of the subRange() so we'll have to
// keep
// track of an updated endOffset on our own
int previousEndOffset = subRange.getEndOffset();
subRange.insertBefore(pValue);
if (subRange.getEndOffset() != previousEndOffset) {
adjustForInsert(subRange.getEndOffset() - previousEndOffset);
}
// re-create the sub-range so we can delete it
subRange = new Range((absPlaceHolderIndex + pValue.length()), (absPlaceHolderIndex
+ pPlaceHolder.length() + pValue.length()), getDocument());
// deletes are automagically propagated
subRange.delete();
}
/**
* Replace (all instances of) a piece of text with another...
*
* @param pPlaceHolder
* The text to be replaced (e.g., "${organization}")
* @param pValue
* The replacement text (e.g., "Apache Software Foundation")
*/
public void replaceText(String pPlaceHolder, String pValue) {
boolean keepLooking = true;
while (keepLooking) {
String text = text();
int offset = text.indexOf(pPlaceHolder);
if (offset >= 0)
replaceText(pPlaceHolder, pValue, offset);
else
keepLooking = false;
}
}
Findet ihr vlt den Fehler, ich habe schon alles durchforstet aber ich finde keine Lösung.
Vlt habt ihr auch Erfahrung mit anderen Package die für das Berarbeiten für Worddokumenten genutz werden kann.
Bin auch schon am Überlegen ob ich rtf nutze aber da habe ich keine geeigneten libs zum bearbeiten gefunden.
Vielen Dank im Voraus für eure Hilfe
Zuletzt bearbeitet: