1. Producten
  2.   Tekstverwerking
  3.   Java
  4.   Apache POI XWPF

Apache POI XWPF

 
 

Java API voor Word OOXML-documenten

Open source-oplossing voor het maken, lezen, bewerken en converteren van Microsoft Word DOCX-bestanden in Java-applicaties.

Apache POI XWPF biedt de functionaliteit om de Microsoft Word 2007 DOCX-bestandsindeling te lezen en te schrijven. XWPF heeft een redelijk stabiele kern-API, die toegang biedt tot de belangrijkste delen van een Word DOCX-bestand. Het kan worden gebruikt voor elementaire en specifieke tekstextractie, manipulatie van kop- en voettekst, tekstmanipulatie en opmaakfuncties. 

Apache POI XWPF staat meer bekend om het genereren van Microsoft Word-bestanden en het bewerken van documenten, het opmaken van tekst en alinea's, het invoegen van afbeeldingen, het maken en ontleden van tabellen, samenvoegfuncties, het beheer van formulierelementen en nog veel meer.

Previous Next

Aan de slag met Apache POI XWPF

Allereerst moet u de Java Development Kit (JDK) op uw systeem hebben geïnstalleerd. Als je het al hebt, ga dan naar de Apache POI's download pagina om de laatste stabiele release in een archief te krijgen. Pak de inhoud van het ZIP-bestand uit in een willekeurige map van waaruit de benodigde bibliotheken aan uw Java-programma kunnen worden gekoppeld. Dat is alles!

Verwijzen naar Apache POI in uw op Maven gebaseerde Java-project is nog eenvoudiger. Het enige dat u nodig hebt, is de volgende afhankelijkheid toe te voegen aan uw pom.xml en uw IDE de Apache POI Jar-bestanden te laten ophalen en ernaar te laten verwijzen.

Apache POI Maven-afhankelijkheid

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>4.1.0</version>
</dependency>

Genereer en bewerk Word-documenten met behulp van Java API

Apache POI XWPF stelt de softwareprogrammeurs in staat om nieuwe Word-documenten in DOCX-bestandsindeling te maken. Ontwikkelaars kunnen ook een bestaand Microsoft Word DOCX-bestand laden om het te bewerken volgens hun toepassingsbehoeften. Hiermee kunt u nieuwe alinea's toevoegen, tekst invoegen, tekstuitlijning en randen toepassen, tekststijl wijzigen en meer.

Genereer een volledig DOCX-bestand

// 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();

Paragraaf, afbeelding en tabel toevoegen aan Word-documenten

Apache POI XWPF stelt de ontwikkelaars in staat om alinea's en afbeeldingen toe te voegen aan Word-documenten. De API biedt ook de functie om tabellen toe te voegen aan DOCX-documenten en maakt het mogelijk om eenvoudige en geneste tabellen te maken met door de gebruiker gedefinieerde gegevens.

Maak een nieuw DOCX-bestand met een tabel

// 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();

Tekst extraheren uit Word OOXML-document

Apache POI XWPF biedt de gespecialiseerde klasse om gegevens uit Microsoft Word DOCX-documenten te extraheren met slechts een paar regels code. Op dezelfde manier kan het ook koppen, voetnoten, tabelgegevens, enzovoort extraheren uit een Word-bestand.

Tekst uit een Word-bestand extraheren

// 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());

Aangepaste kop- en voettekst toevoegen aan DOCX-documenten

Kop- en voettekst zijn een belangrijk onderdeel van het Word-document, omdat deze meestal extra informatie bevatten, zoals datums, paginanummers, de naam van de auteur en voetnoten, die helpen om langere documenten overzichtelijk en beter leesbaar te houden. Apache POI XWPF stelt Java-ontwikkelaars in staat om aangepaste kop- en voetteksten toe te voegen aan Word-documenten.

Beheer aangepaste kop- en voettekst in Word DOCX-bestand


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);
      }
    }
  }
}
 Dutch