Apache POI XWPF
Java-API für Word-OOXML-Dokumente
Open-Source-Lösung zum Erstellen, Lesen, Bearbeiten und Konvertieren von Microsoft Word DOCX-Dateien in Java-Anwendungen.
Apache POI XWPF bietet die Funktionalität zum Lesen und Schreiben des Microsoft Word 2007 DOCX-Dateiformats. XWPF hat eine ziemlich stabile Kern-API, die Zugriff auf die Hauptteile einer Word-DOCX-Datei bietet. Es kann für grundlegende und spezifische Textextraktion, Manipulation von Kopf- und Fußzeilen, Textmanipulation und Styling-Funktionen verwendet werden.
Apache POI XWPF ist bekannter für die Erstellung von Microsoft Word-Dateien und die Bearbeitung von Dokumenten, die Formatierung von Text und Absätzen, das Einfügen von Bildern, die Erstellung und Analyse von Tabellen, Serienbrieffunktionen, die Verwaltung von Formularelementen und vieles mehr.
Erste Schritte mit Apache POI XWPF
Zunächst muss das Java Development Kit (JDK) auf Ihrem System installiert sein. Wenn Sie es bereits haben, gehen Sie zur Downloadseite von Apache POI, um die neueste stabile Version in einem Archiv zu erhalten. Extrahieren Sie den Inhalt der ZIP-Datei in ein beliebiges Verzeichnis, aus dem die benötigten Bibliotheken mit Ihrem Java-Programm verknüpft werden können. Das ist alles!
Das Referenzieren von Apache POI in Ihrem Maven-basierten Java-Projekt ist sogar noch einfacher. Alles, was Sie brauchen, ist, die folgende Abhängigkeit in Ihrer pom.xml hinzuzufügen und Ihre IDE die Apache POI-Jar-Dateien abrufen und referenzieren zu lassen.
Apache POI Maven-Abhängigkeit
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
Erstellen und bearbeiten Sie Word-Dokumente mit der Java-API
Apache POI XWPF ermöglicht Softwareprogrammierern, neue Word-Dokumente im DOCX-Dateiformat zu erstellen. Entwickler können auch eine vorhandene Microsoft Word DOCX-Datei laden, um sie entsprechend ihren Anwendungsanforderungen zu bearbeiten. Sie können damit neue Absätze hinzufügen, Text einfügen, Textausrichtung und -rahmen anwenden, Textstile ändern und vieles mehr.
Generieren Sie eine DOCX-Datei von Grund auf neu
// initialize a blank document
XWPFDocument document = new XWPFDocument();
// create a new file
FileOutputStream out = new FileOutputStream(new File("document.docx"));
// create a new paragraph paragraph
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("File Format Developer Guide - " +
"Learn about computer files that you come across in " +
"your daily work at: www.fileformat.com ");
document.write(out);
out.close();
Hinzufügen von Absatz, Bild und Tabelle zu Word-Dokumenten
Apache POI XWPF ermöglicht es den Entwicklern, Absätze und Bilder zu Word-Dokumenten hinzuzufügen. Die API bietet auch die Funktion zum Hinzufügen von Tabellen zu DOCX-Dokumenten und ermöglicht gleichzeitig das Erstellen einfacher und verschachtelter Tabellen mit benutzerdefinierten Daten.
Erstellen Sie eine neue DOCX-Datei mit einer Tabelle
// initialize a blank document
XWPFDocument document = new XWPFDocument();
// create a new file
FileOutputStream out = new FileOutputStream(new File("table.docx"));
// create a new table
XWPFTable table = document.createTable();
// create first row
XWPFTableRow tableRowOne = table.getRow(0);
tableRowOne.getCell(0).setText("Serial No");
tableRowOne.addNewTableCell().setText("Products");
tableRowOne.addNewTableCell().setText("Formats");
// create second row
XWPFTableRow tableRowTwo = table.createRow();
tableRowTwo.getCell(0).setText("1");
tableRowTwo.getCell(1).setText("Apache POI XWPF");
tableRowTwo.getCell(2).setText("DOCX, HTML, FO, TXT, PDF");
// create third row
XWPFTableRow tableRowThree = table.createRow();
tableRowThree.getCell(0).setText("2");
tableRowThree.getCell(1).setText("Apache POI HWPF");
tableRowThree.getCell(2).setText("DOC, HTML, FO, TXT");
document.write(out);
out.close();
Text aus Word-OOXML-Dokument extrahieren
Apache POI XWPF bietet die spezialisierte Klasse zum Extrahieren von Daten aus Microsoft Word DOCX-Dokumenten mit nur wenigen Codezeilen. Auf die gleiche Weise kann es auch Überschriften, Fußnoten, Tabellendaten usw. aus einer Word-Datei extrahieren.
Text aus einer Word-Datei extrahieren
// load DOCX file
FileInputStream fis = new FileInputStream("document.docx");
// open file
XWPFDocument file = new XWPFDocument(OPCPackage.open(fis));
// read text
XWPFWordExtractor ext = new XWPFWordExtractor(file);
// display text
System.out.println(ext.getText());
Fügen Sie benutzerdefinierte Kopf- und Fußzeilen zu DOCX-Dokumenten hinzu
Kopf- und Fußzeilen sind ein wichtiger Teil des Word-Dokuments, da diese normalerweise zusätzliche Informationen wie Daten, Seitenzahlen, Name des Autors und Fußnoten enthalten, die dabei helfen, längere Dokumente zu organisieren und leichter lesbar zu halten. Apache POI XWPF ermöglicht es Java-Entwicklern, benutzerdefinierte Kopf- und Fußzeilen zu Word-Dokumenten hinzuzufügen.
Verwalten Sie benutzerdefinierte Kopf- und Fußzeilen in der Word-DOCX-Datei
public class HeaderFooterTable {
public static void main(String[] args) throws IOException {
try (XWPFDocument doc = new XWPFDocument()) {
// Create a header with a 1 row, 3 column table
XWPFHeader hdr = doc.createHeader(HeaderFooterType.DEFAULT);
XWPFTable tbl = hdr.createTable(1, 3);
// Set the padding around text in the cells to 1/10th of an inch
int pad = (int) (.1 * 1440);
tbl.setCellMargins(pad, pad, pad, pad);
// Set table width to 6.5 inches in 1440ths of a point
tbl.setWidth((int) (6.5 * 1440));
CTTbl ctTbl = tbl.getCTTbl();
CTTblPr ctTblPr = ctTbl.addNewTblPr();
CTTblLayoutType layoutType = ctTblPr.addNewTblLayout();
layoutType.setType(STTblLayoutType.FIXED);
BigInteger w = new BigInteger("3120");
CTTblGrid grid = ctTbl.addNewTblGrid();
for (int i = 0; i < 3; i++) {
CTTblGridCol gridCol = grid.addNewGridCol();
gridCol.setW(w);
}
// Add paragraphs to the cells
XWPFTableRow row = tbl.getRow(0);
XWPFTableCell cell = row.getCell(0);
XWPFParagraph p = cell.getParagraphArray(0);
XWPFRun r = p.createRun();
r.setText("header left cell");
cell = row.getCell(1);
p = cell.getParagraphArray(0);
r = p.createRun();
r.setText("header center cell");
cell = row.getCell(2);
p = cell.getParagraphArray(0);
r = p.createRun();
r.setText("header right cell");
// Create a footer with a Paragraph
XWPFFooter ftr = doc.createFooter(HeaderFooterType.DEFAULT);
p = ftr.createParagraph();
r = p.createRun();
r.setText("footer text");
try (OutputStream os = new FileOutputStream(new File("headertable.docx"))) {
doc.write(os);
}
}
}
}