Apache POI XWPF
API Java pentru documente OOXML Word
Soluție open source pentru a crea, citi, edita și conversia fișiere Microsoft Word DOCX în aplicații Java.
Apache POI XWPF oferă funcționalitatea pentru a citi și scrie formatul de fișier Microsoft Word 2007 DOCX. XWPF are un API de bază destul de stabil, oferind acces la părțile principale ale unui fișier Word DOCX. Poate fi folosit pentru extragerea textului de bază și specific, manipularea antetului și a subsolului, manipularea textului și funcțiile de stilare.
Apache POI XWPF este mai renumit pentru generarea de fișiere Microsoft Word și editarea documentelor, formatarea textului și a paragrafelor, inserarea imaginilor, crearea și analizarea tabelelor, funcțiile de îmbinare a corespondenței, gestionarea elementelor de formular și multe altele.
Noțiuni introductive cu Apache POI XWPF
În primul rând, trebuie să aveți Java Development Kit (JDK) instalat pe sistemul dvs. Dacă îl aveți deja, treceți la pagina de descărcare a Apache POI pentru a obține cea mai recentă versiune stabilă într-o arhivă. Extrageți conținutul fișierului ZIP în orice director de unde bibliotecile necesare pot fi legate la programul dvs. Java. Asta e tot!
Referința la Apache POI în proiectul Java bazat pe Maven este și mai simplă. Tot ce aveți nevoie este să adăugați următoarea dependență în pom.xml și să lăsați IDE-ul să preia și să facă referire la fișierele Apache POI Jar.
Dependența 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>
Generați și editați documente Word folosind API-ul Java
Apache POI XWPF le permite programatorilor de software să creeze noi documente Word în format de fișier DOCX. Dezvoltatorii pot încărca și un fișier Microsoft Word DOCX existent pentru a-l edita în funcție de nevoile aplicației lor. Vă permite să adăugați paragrafe noi, să inserați text, să aplicați alinierea și chenarele textului, să schimbați stilul textului și multe altele.
Generați un fișier DOCX de la zero
// 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();
Adăugați paragraf, imagine și tabel în documentele Word
Apache POI XWPF permite dezvoltatorilor să adauge paragrafe și imagini în documentele Word. API-ul oferă, de asemenea, funcția de a adăuga tabele la documentele DOCX, făcând posibilă crearea de tabele simple și imbricate cu date definite de utilizator.
Creați un nou fișier DOCX cu un 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();
Extrageți text din documentul Word OOXML
Apache POI XWPF oferă clasa specializată pentru extragerea datelor din documentele Microsoft Word DOCX cu doar câteva linii de cod. În același mod, poate extrage, de asemenea, titluri, note de subsol, date de tabel și așa mai departe dintr-un fișier Word.
Extrageți text dintr-un fișier 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());
Adăugați antet și subsol personalizate la documentele DOCX
Antetul și subsolul sunt o parte importantă a documentului Word, deoarece acestea conțin de obicei informații suplimentare, cum ar fi datele, numerele paginilor, numele autorului și notele de subsol, care ajută la păstrarea documentelor mai lungi organizate și mai ușor de citit. Apache POI XWPF permite dezvoltatorilor Java să adauge anteturi și subsoluri personalizate documentelor Word.
Gestionați antetul și subsolul personalizate în fișierul 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);
}
}
}
}