1. produkty
  2.   Zpracování textu
  3.   Java
  4.   Apache POI XWPF

Apache POI XWPF

 
 

Java API pro dokumenty Word OOXML

Řešení s otevřeným zdrojovým kódem pro vytváření, čtení, úpravy a převádění souborů Microsoft Word DOCX v aplikacích Java.

Apache POI XWPF poskytuje funkce pro čtení a zápis ve formátu DOCX Microsoft Word 2007. XWPF má poměrně stabilní jádro API, které poskytuje přístup k hlavním částem souboru Word DOCX. Lze jej použít pro základní a konkrétní extrakci textu, manipulaci se záhlavím a zápatím, manipulaci s textem a funkce stylů. 

Apache POI XWPF je známější pro generování souborů Microsoft Word a úpravy dokumentů, formátování textu a odstavců, vkládání obrázků, vytváření a analýzu tabulek, funkce hromadné korespondence, správu prvků formuláře a mnoho dalšího.

Previous Next

Začínáme s Apache POI XWPF

Nejprve musíte mít na svém systému nainstalovanou sadu Java Development Kit (JDK). Pokud jej již máte, přejděte na stránku stažení místa zájmu Apache, kde získáte nejnovější stabilní verzi v archivu. Extrahujte obsah souboru ZIP do libovolného adresáře, odkud lze požadované knihovny propojit s vaším programem Java. To je vše!

Odkazování na Apache POI ve vašem projektu Java založeném na Maven je ještě jednodušší. Vše, co potřebujete, je přidat následující závislost do vašeho pom.xml a nechat vaše IDE načíst a odkazovat na soubory Apache POI Jar.

Závislost na Apache POI Maven

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

Vytvářejte a upravujte dokumenty Word pomocí Java API

Apache POI XWPF umožňuje softwarovým programátorům vytvářet nové dokumenty Word ve formátu DOCX. Vývojáři mohou také načíst existující soubor DOCX aplikace Microsoft Word a upravit jej podle potřeb své aplikace. Umožňuje vám přidávat nové odstavce, vkládat text, používat zarovnání a ohraničení textu, měnit styl textu a další.

Vygenerujte soubor DOCX od začátku

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

Přidejte odstavec, obrázek a tabulku do dokumentů aplikace Word

Apache POI XWPF umožňuje vývojářům přidávat odstavce a obrázky do dokumentů aplikace Word. Rozhraní API také poskytuje funkci pro přidávání tabulek do dokumentů DOCX a zároveň umožňuje vytvářet jednoduché a vnořené tabulky s uživatelsky definovanými daty.

Vytvořte nový soubor DOCX s tabulkou

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

Extrahujte text z dokumentu Word OOXML

Apache POI XWPF poskytuje specializovanou třídu pro extrahování dat z dokumentů Microsoft Word DOCX pomocí pouhých několika řádků kódu. Stejným způsobem může také extrahovat nadpisy, poznámky pod čarou, data tabulek a tak dále ze souboru aplikace Word.

Extrahujte text ze souboru aplikace Word

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

Přidejte vlastní záhlaví a zápatí do dokumentů DOCX

Záhlaví a zápatí jsou důležitou součástí dokumentu aplikace Word, protože obvykle obsahují další informace, jako jsou data, čísla stránek, jméno autora a poznámky pod čarou, což pomáhá udržovat delší dokumenty organizované a snáze čitelné. Apache POI XWPF umožňuje vývojářům Java přidávat vlastní záhlaví a zápatí do dokumentů aplikace Word.

Spravujte vlastní záhlaví a zápatí v souboru Word DOCX


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);
      }
    }
  }
}
 Čeština