1. Produkter
  2.   Ordbehandling
  3.   Java
  4.   Apache POI XWPF

Apache POI XWPF

 
 

Java API för Word OOXML dokument

Lösning med öppen källkod för att skapa, läsa, redigera och konvertera Microsoft Word DOCX-filer i Java-applikationer.

Apache POI XWPF tillhandahåller funktionen för att läsa och skriva Microsoft Word 2007 DOCX-filformat. XWPF har ett ganska stabilt kärn-API som ger tillgång till huvuddelarna i en Word DOCX-fil. Den kan användas för grundläggande och specifik textextraktion, manipulation av sidhuvud och sidfot, textmanipulering och stilfunktioner. 

Apache POI XWPF är mer känt för Microsoft Word-filgenerering och dokumentredigering, formatering av text och stycken, bildinfogning, tabellskapande och analys, kopplingsfunktioner, hantering av formulärelement och mycket mer.

Previous Next

Komma igång med Apache POI XWPF

Först och främst måste du ha Java Development Kit (JDK) installerat på ditt system. Om du redan har det, fortsätt till Apache POI:s nedladdningssida för att få den senaste stabila utgåvan i ett arkiv. Extrahera innehållet i ZIP-filen i valfri katalog där de nödvändiga biblioteken kan länkas till ditt Java-program. Det är allt!

Att referera till Apache POI i ditt Maven-baserade Java-projekt är ännu enklare. Allt du behöver är att lägga till följande beroende i din pom.xml och låta din IDE hämta och referera till Apache POI Jar-filer.

Apache POI Maven beroende

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

Generera och redigera Word-dokument med Java API

Apache POI XWPF gör det möjligt för programvaruprogrammerare att skapa nya Word-dokument i DOCX-filformat. Utvecklare kan också ladda en befintlig Microsoft Word DOCX-fil för att redigera den enligt deras applikationsbehov. Det låter dig lägga till nya stycken, infoga text, tillämpa textjustering och ramar, ändra textstil och mer.

Generera en DOCX-fil från början

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

Lägg till stycke, bild och tabell i Word-dokument

Apache POI XWPF gör det möjligt för utvecklarna att lägga till stycken och bilder i Word-dokument. API:et tillhandahåller även funktionen för att lägga till tabeller i DOCX-dokument samtidigt som det gör det möjligt att skapa enkla och kapslade tabeller med användardefinierade data.

Skapa en ny DOCX-fil med en tabell

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

Extrahera text från Word OOXML-dokument

Apache POI XWPF tillhandahåller den specialiserade klassen för att extrahera data från Microsoft Word DOCX-dokument med bara några rader kod. På samma sätt kan den också extrahera rubriker, fotnoter, tabelldata och så vidare från en Word-fil.

Extrahera text från en Word-fil

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

Lägg till anpassad sidhuvud och sidfot till DOCX-dokument

Sidhuvud och sidfot är en viktig del av Word-dokumentet eftersom de vanligtvis innehåller extra information som datum, sidnummer, författarens namn och fotnoter, vilket hjälper till att hålla längre dokument organiserade och lättare att läsa. Apache POI XWPF tillåter Java-utvecklare att lägga till anpassade sidhuvuden och sidfötter i Word-dokument.

Hantera anpassad sidhuvud och sidfot i Word DOCX-fil


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