Apache POI Word Text einfügen

imox

Aktives Mitglied
Hey Leute,

ich benutz die Apache POI API gerade zum ersten Mal und versuche Word files zu verändern. Kann mir jemand sagen, wie ich an einer bestimmten Stelle einen anfangen kann Text einzufügen? Ich finde immer nur Beispiele wo ein Satz geschrieben.

Vielen Dank schon mal
Gruß
Imox
 

imox

Aktives Mitglied
ähmm ja sorry nicht so viel geschlafen ^^ Also ich will ein bestimmtes Wort in dem Word Dokument finden und an der Stelle dann Text bzw. mehre Text einfügen.
 

Kababär

Top Contributor
Ich denke der TE sucht einfach nur nach dem Konstrukt (welche Objekte von Apache, welche Methoden, etc.), um auf die Indexstelle in einer Worddatei zuzugreifen, dort was anzuhängen und den Text wieder abzuspeichern.

Aber recht hast du. Von allem nix da. Aber vermutlich weil er noch nichts relevantes hat :/
 

imox

Aktives Mitglied
yo sorry Leute habt alle Recht hehe ;)

also hiermit such ich mir die Position, aber wie dann genau weiter? Also klar neue Paragraphen erstellen und der stelle einfügen oder? Blick noch nicht so ganz durch bei den Objekten ^^Also Klar ne Range hat Paragraphen und die hat dann runs (warum das auch immer run heisst?) Also einfach dann an der Stelle neue Paragraphen einfügen? Aber das ist ja dann wieder voll umständlich muss ich alle danach löschen und wieder hinzufügen. Das muss es doch sauberer geben oder ^^? Danke schon mal und ich find echt keinen weg den Code hier als Code zu formatieren. Vermutlich hab ich aber nur Tomaten auf den Augen

Java:
public static int[] getPosition(HWPFDocument doc, String findText) {
   findText = findText(findText);
   Range range = doc.getRange();
   int[] position = null;
   for (int i = 0; i < range.numSections(); ++i) {
     Section s = range.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)) {
           position = new int[2];
           position[0] = i;
           position[1] = x;
           break;
         }
       }
     }
   }
   return position;
}
 

Kababär

Top Contributor
Das ist in dem Menü des Editors hier ;)
Mal angenommen du willst ein Buchstabe in die Mitte des Wortes "Stumel" einfügen, weil dir aufgefallen ist (oder der Autokorrektur), dass dieses Wort mit zwei 'm' geschrieben wird. Was wird getan?
Identifizieren des Index, an welcher der Buchstabe eingefügt werden soll.
Nun hat man drei Möglichkeit:
1. Buchstaben vorne an das Wort hängen und in Einzelschritten den Buchstaben nach rechts shiften, wobei der rechte Nachbar die Position mit dem einzufügenden Buchstaben tauscht
2. analog, nur wird der Buchstabe rechts abgehängt.
3. Teilen des Wortes in eine linke und rechts Hälfte in Abhängigkeit des Index, an dem der Buchstabe eingefügt werden soll. Der Index ist die Stelle, wo der linke Teil endet und der rechte Teil anfängt.
Man hängt den Buchstaben an das Ende des linken Teils und danach hängt man den rechten Teil an.
Wie würdest du es denn machen?
Auch wenn es dir nicht klar ist: viele Anweisungen bestehen aus einem Algorithmus. Ein Algorithmus ist das Lösen eines Problems, in dem man das Problem in endlich viele Schritte auf möglichst kleine Teilprobleme herunterbricht.

Aber nun zum Eigentlichen. Wenn dir nicht klar ist, was du als nächstes tun sollst, du aber weißt, mit welchen Objekt du arbeiten sollst und des Weiteren weißt, dass es eine Dokumentation über dieses Objekt gibt, so wäre doch der nächste Schritt, in die Doku zu gucken, um herauszufinden, was das Objekt alles kann und was davon du gebrauchen kannst, oder?
Manches wirst du direkt anwenden können, bei anderen Dingen wirst du noch selbst entwickelte Zwischenschritte zur Vorbereitung implementieren müssen.

Edit: hatte gerade etwas Zeit und dachte mir ich erzähle mal bisschen was :D
 
Zuletzt bearbeitet:

imox

Aktives Mitglied
Hey,

ja danke für deine Erklärung. Aber das ist mir ja schon klar. Ich raff die API einfach nicht genau. Und hatte gehofft jemand hat das hier schon mal gemacht. Und nein das ist nicht so einfach mit der API. Darum gehts doch.
 

imox

Aktives Mitglied
So habs jetzt so mehr oder weniger. Text kann ich einfüge, was ich aber nicht verstehe, dass wenn ich den Text einfüge zerschießt es mir meinen Header. Jemand eine Idee warum? bzw. warum da immer so komische side effects auftreten?

Java:
    private void writeEntries(HWPFDocument doc) {

        int[] position = WordPOIUtil.getPosition(doc, "epoche");

        if (position != null) {

            Range range = doc.getRange();

            for (int i = 0; i < range.numSections(); ++i) {

                Section s = range.getSection(i);

                for (int x = 0; x < s.numParagraphs(); x++) {

                    Paragraph p = s.getParagraph(x);

                    for (int z = 0; z < p.numCharacterRuns(); z++) {

                        if (i == position[0] && x == position[1]

                                && z == position[2]) {

                            CharacterRun run = p.getCharacterRun(z);

                            CharacterRun newRun = run.insertAfter("test");

                            newRun.setBold(true);

                        }

                    }

                }

            }

        }

    }
 

imox

Aktives Mitglied
Ich führe wirklich nur diese Methode mehr aus. Das reicht damit der Header zerschossen wird. Führe ich Sie nicht aus ist alles ok.

Vorher
3krbyjg6.png

Nacher
e7o6jqlw.png
 

Kababär

Top Contributor
Sieht eher so aus, als ob dein Java Code deinen Header als Paragraph betrachtet.
Schon mal so etwas versucht?

Code:
Run headerRun = new Run();
  headerRun.addText("Header text");
Paragraph headerParagraph = new Paragraph();
            headerParagraph.add(headerRun);
            headerParagraph.setHorizontalTextAlignment(HorizontalAlignmentType.RIGHT);

            Header header = new Header();
            header.add(headerParagraph);
 

Kababär

Top Contributor
Du liest ja jeden Paragraph ein und am Ende schreibst du wieder die Datei bzw. aktualisiert die Änderungen von dir, richtig?
Dann ist das Problem, dass dein Header als Paragraph eingelesen wird und als solchen behandelt wird, ergo ist dein Header kein Header mehr.
Das vermute ich jetzt einfach mal.
 

imox

Aktives Mitglied
ok klingt logisch aber wo ist das Problem? Ich fasse den Paragraphen Header doch gar nicht an? Ich füge doch an einer anderen Stelle andere Paragraphen bzw. sogar nur run's hinzu. Wenn ich das ja nicht tue ist der Header ja auch nicht kaputt.
 

imox

Aktives Mitglied
Ich meinte damit das es logisch klingt, dass der Header kein Header ist sondern ein Paragraph. Aber warum ist das mein Problem? Ich fasse den Paragraphen doch gar nicht an?

Was auch komisch ist, dass mein Header abhängig von dem Text den ich einfüge anders aussieht. Also mal mehr Striche mal weniger usw.

Wie auch immer hast du eine Idee wie ich das Problem jetzt lösen kann?
 

Kababär

Top Contributor
also laut dem Snippet von mir, ist ein Header nicht weiteres als eine spezielle Art Paragraph, das heißt:
Liest du alle Paragraphen ein, liest du auch alle header ein und definierst die Header als Paragraph beim Schreiben.

Guck dir mal headerStories an, vielleicht hilft dir das irgendwie.
 

imox

Aktives Mitglied
Ja ok aber wo ist denn das Problem? Ich mache doch gar nichts mit den Headerparagraphen. Das doc selber hat ja auch mehrere Methoden.

doc.getHeaderStoryRange()
doc.getRange()

Damit bekommen man ja die verschiedenen Paragraphen. Und ich verändere ja nur die normale Range nicht die HeaderRange.
 

imox

Aktives Mitglied
Ich glaube du verstehst das hier gerade falsch? Ich füge andere Paragraphen in der normalen Range hinzu und mein Header zerschießt sich. Ich fasse den Header doch gar nicht an.
 

imox

Aktives Mitglied
Habe ich bereits. Ich fasse meinen Header nicht an. In meinen Java Code oben wo ich zeige was ich mache, habe ich auch mal ein sysout von jedem run gemacht. Das ist wirklich nur der Text der in dem Doc steht nicht im Header etc.

Und was genau soll ich denn an meinem code anpassen? In Bezug auf den Link den du mir gegeben hast?
 
Zuletzt bearbeitet:

Kababär

Top Contributor
Also ich weiß nicht, was da passiert, aber selbst probieren kann ich es auch nicht, da keinen vollständigen Code und kein Word-Exemplar habe, sonst würde ich da mal bisschen rumprobieren.
Ich bin kein Java Apache POI Profi, weiß also nicht was genau da unter der Haube läuft.
Daher kann ich dir leider jetzt auch nicht sagen, was genau da nicht stimmt.

Aber fest steht doch, dass irgendwas mit dem Header passiert. Auch wenn du diesen nicht explizit anfasst, passiert da was. Nur weiß ich auch nicht was.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
K Apache POI Word Tabelle Zellen verbinden Allgemeine Java-Themen 4
K Apache POI Word Tabelle Spaltenbreite festlegen Allgemeine Java-Themen 7
K Apache POI Word bestimmte Textstellen bearbeiten Allgemeine Java-Themen 1
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
T Logging mit org.apache.logging.log4j Allgemeine Java-Themen 1
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
H Apache fop - OutOfMemoryError Allgemeine Java-Themen 10
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
L APACHE POI PIVOT TABELLEN Allgemeine Java-Themen 4
L Apache POI Datenquelle Allgemeine Java-Themen 1
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
F Input/Output NullPointerException, aber wieso? [Apache POI] Allgemeine Java-Themen 11
F Input/Output NullPointerException with Apache POI Allgemeine Java-Themen 7
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Apache POI - No external workbook with name Allgemeine Java-Themen 5
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
MiMa Apache Tika: Warnmeldungen und Beispielcode Allgemeine Java-Themen 12
X Performance für Tomcat / Apache optimieren Allgemeine Java-Themen 2
G Ant Probleme bei einer Installation die Apache ant+ivy verwendet Allgemeine Java-Themen 14
FrittenFritze Swing Apache Batik - Zoom an einer bestimmten Stelle Allgemeine Java-Themen 4
K Apache poi: Deprecated getCellType Allgemeine Java-Themen 3
J Apache POI Excel- Blattschutz aufheben Allgemeine Java-Themen 2
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
R Apache POI XSSF Allgemeine Java-Themen 2
E Apache POI Powerpoint Verlinkungen ändern Allgemeine Java-Themen 4
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
S Eclipse Apache Camel FTP: Fehlerbehandlung, wie? Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
GianaSisters Apache POI - Hyperlink erstellen Allgemeine Java-Themen 0
reibi Apache PDFBox Allgemeine Java-Themen 0
C Was bekomme ich eine Nullpointerexception? (Apache POI) Allgemeine Java-Themen 3
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
H Apache POI HSSF - Farbe/Rahmen etc. ohne Style-Vorlage? Allgemeine Java-Themen 4
E Apache POI-Datei lesen und umschreiben Allgemeine Java-Themen 8
G Input/Output Apache POI Excel Allgemeine Java-Themen 5
L Apache CLI: Args[] übergeben Allgemeine Java-Themen 3
P docx mit Apache POI auslesen, verändern und zurückschreiben Allgemeine Java-Themen 2
N Applet Apache Poi Wert einer Formel ausgeben Allgemeine Java-Themen 5
L Apache Common CLI Allgemeine Java-Themen 4
J Webstart (auf Apache) jnlp wird nicht geladen Allgemeine Java-Themen 2
S HTTP Apache HTTPClient Problem Allgemeine Java-Themen 4
R org.apache.http kompletter Internetausfall Allgemeine Java-Themen 7
J xlsx Dateien lesen OHNE apache POI Allgemeine Java-Themen 6
V Für was benötigt man Apache Common Allgemeine Java-Themen 3
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
V Apache POI Excel Sheet auslesen Allgemeine Java-Themen 5
B Problem mit RegEs und org.apache.regexp.RE Allgemeine Java-Themen 5
T Apache POI Export EXCEL - [Zahlen-Werte] Allgemeine Java-Themen 1
Landei Erfahrungen mit JavaConfig oder Apache Commons Config? Allgemeine Java-Themen 3
J Apache FTPClient upload Allgemeine Java-Themen 3
A Apache License, Version 2.0 Allgemeine Java-Themen 7
S Bzip2 apache commons-compress Allgemeine Java-Themen 3
Chris81T Apache FOP 0.20-5 mit JNI von C++ Code aufrufen Allgemeine Java-Themen 8
C Apache POI(HSSF) Conditional Formatting Allgemeine Java-Themen 3
G Apache soll mit SVN zusammenarbeiten Allgemeine Java-Themen 3
E Apache Commons - PropertyConfiguration - Autosave Allgemeine Java-Themen 2
G Servlet über apache Tomcat ansprechen Allgemeine Java-Themen 6
alexpetri DirectoryWalker apache.commons Allgemeine Java-Themen 3
S Apache Commons Net geht nicht Allgemeine Java-Themen 5
G mit Apache-Jakarta-POI auch Graphiken aus Excel einlesen? Allgemeine Java-Themen 3
T Apache Lucene Allgemeine Java-Themen 2
Q Ant und org.apache.log4j.xml.DOMConfigurator Problem Allgemeine Java-Themen 2
M Java Webserver - Tomcat alleine oder zusammen mit Apache? Allgemeine Java-Themen 3
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
M Aus XML ein Word-Dokument(Template) füllen Allgemeine Java-Themen 8
I Text suchen und ersetzen im Word Dokument Allgemeine Java-Themen 3
RalleYTN float in WORD konvertieren Allgemeine Java-Themen 1
J Datentypen Absätze mit String im Word Dokument Allgemeine Java-Themen 3
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
Thallius PDF oder Word als Template benutzen Allgemeine Java-Themen 1
D Symbol in Word-Dokument einfügen Allgemeine Java-Themen 1
D OOXML-Schemas (Word / Fußzeile) Allgemeine Java-Themen 0
T Word Java Absatz Allgemeine Java-Themen 4
R MS Word in PDF konvertieren Allgemeine Java-Themen 1
H Input/Output Microsoft Word aus JAVA Heraus Steuern. Allgemeine Java-Themen 3
Landei Collections Word-Frequenzen zählen Allgemeine Java-Themen 7
M Word mit Parameterübergabe Allgemeine Java-Themen 2
M Syntax Highlighter für MS Word? Allgemeine Java-Themen 2
Beckenbauer Mehrere Paragraphe in eine Word Datei schreiben Allgemeine Java-Themen 4
S Formatierungen aus HTML-Dokument übernehmen und in Word docx schreiben Allgemeine Java-Themen 3
S Automatisierte generierung von "Word"-Dokumenten Allgemeine Java-Themen 5
K Word Dokument bearbeiten Allgemeine Java-Themen 2
Blacky_82 word-Vorlage in java öffnen Allgemeine Java-Themen 4
ARadauer Word Datein bearbeiten Allgemeine Java-Themen 3
MQue aus einem Applet auf Word zugreifen Allgemeine Java-Themen 3
M Speichern von Word als Event abfangen Allgemeine Java-Themen 7
F Plugin damit M$ Word Java syntax versteht? Allgemeine Java-Themen 12
K Bilder mit Java in MS Word einfügen Allgemeine Java-Themen 2
Z Word/PDF Generierung Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben