Apache POI XWPF
API Java per documenti Word OOXML
Soluzione open source per creare, leggere, modificare e convertire file Microsoft Word DOCX in applicazioni Java.
Apache POI XWPF fornisce la funzionalità per leggere e scrivere in formato file DOCX Microsoft Word 2007. XWPF ha un'API di base abbastanza stabile, che fornisce accesso alle parti principali di un file Word DOCX. Può essere utilizzato per l'estrazione di testo di base e specifica, la manipolazione di intestazione e piè di pagina, la manipolazione del testo e le funzioni di stile.
Apache POI XWPF è più rinomato per la generazione di file Microsoft Word e la modifica di documenti, la formattazione di testo e paragrafi, l'inserimento di immagini, la creazione e l'analisi di tabelle, le funzionalità di stampa unione, la gestione degli elementi dei moduli e molto altro.
Guida introduttiva ad Apache POI XWPF
Prima di tutto, devi avere il Java Development Kit (JDK) installato sul tuo sistema. Se lo hai già, procedi alla pagina download di Apache POI per ottenere l'ultima versione stabile in un archivio. Estrarre il contenuto del file ZIP in qualsiasi directory da cui è possibile collegare le librerie richieste al proprio programma Java. Questo è tutto!
Fare riferimento a Apache POI nel tuo progetto Java basato su Maven è ancora più semplice. Tutto ciò di cui hai bisogno è aggiungere la seguente dipendenza nel tuo pom.xml e lasciare che il tuo IDE prenda e faccia riferimento ai file Apache POI Jar.
Dipendenza 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 e modifica documenti Word utilizzando l'API Java
Apache POI XWPF consente ai programmatori di software di creare nuovi documenti Word in formato file DOCX. Gli sviluppatori possono anche caricare un file DOCX di Microsoft Word esistente per modificarlo in base alle proprie esigenze applicative. Ti consente di aggiungere nuovi paragrafi, inserire testo, applicare l'allineamento e i bordi del testo, modificare lo stile del testo e altro ancora.
Genera un file DOCX da 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();
Aggiungi paragrafo, immagine e tabella ai documenti di Word
Apache POI XWPF consente agli sviluppatori di aggiungere paragrafi e immagini ai documenti di Word. L'API fornisce anche la funzione per aggiungere tabelle ai documenti DOCX, rendendo possibile creare tabelle semplici e nidificate con dati definiti dall'utente.
Crea un nuovo file DOCX con una tabella
// 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();
Estrai testo dal documento Word OOXML
Apache POI XWPF fornisce la classe specializzata per estrarre dati da documenti Microsoft Word DOCX con poche righe di codice. Allo stesso modo, può anche estrarre intestazioni, note a piè di pagina, dati di tabelle e così via da un file di Word.
Estrai il testo da un file di 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());
Aggiungi intestazione e piè di pagina personalizzati ai documenti DOCX
L'intestazione e il piè di pagina sono una parte importante del documento di Word poiché di solito contengono informazioni aggiuntive come date, numeri di pagina, nome dell'autore e note a piè di pagina, che aiutano a mantenere i documenti più lunghi organizzati e più facili da leggere. Apache POI XWPF consente agli sviluppatori Java di aggiungere intestazioni e piè di pagina personalizzati ai documenti di Word.
Gestisci intestazione e piè di pagina personalizzati nel file 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);
}
}
}
}