Apache POI XWPF
Java API dla dokumentów Word OOXML
Rozwiązanie typu Open Source do tworzenia, odczytywania, edytowania i konwertowania plików Microsoft Word DOCX w aplikacjach Java.
Apache POI XWPF zapewnia funkcję odczytu i zapisu plików w formacie DOCX programu Microsoft Word 2007. XWPF ma dość stabilny podstawowy interfejs API, zapewniający dostęp do głównych części pliku Word DOCX. Może być używany do podstawowego i specyficznego wyodrębniania tekstu, manipulowania nagłówkiem i stopką, manipulacji tekstem i funkcjami stylizacji.
Apache POI XWPF jest bardziej znany z generowania plików Microsoft Word i edytowania dokumentów, formatowania tekstu i akapitów, wstawiania obrazów, tworzenia i analizowania tabel, funkcji korespondencji seryjnej, zarządzania elementami formularzy i wielu innych.
Pierwsze kroki z Apache POI XWPF
Przede wszystkim musisz mieć zainstalowany zestaw Java Development Kit (JDK) w swoim systemie. Jeśli już go masz, przejdź do strony pobieranie Apache POI, aby pobrać najnowszą stabilną wersję w archiwum. Wyodrębnij zawartość pliku ZIP w dowolnym katalogu, z którego wymagane biblioteki można połączyć z programem Java. To wszystko!
Odwoływanie się do punktów POI Apache w projekcie Java opartym na Maven jest jeszcze prostsze. Wszystko, czego potrzebujesz, to dodać następującą zależność do pliku pom.xml i pozwolić swojemu środowisku IDE pobierać i odwoływać się do plików Apache POI Jar.
Zależność 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>
Generuj i edytuj dokumenty Word za pomocą Java API
Apache POI XWPF umożliwia programistom tworzenie nowych dokumentów Word w formacie pliku DOCX. Programiści mogą również załadować istniejący plik Microsoft Word DOCX, aby edytować go zgodnie z potrzebami aplikacji. Umożliwia dodawanie nowych akapitów, wstawianie tekstu, stosowanie wyrównania i obramowania tekstu, zmianę stylu tekstu i nie tylko.
Wygeneruj plik DOCX od podstaw
// 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();
Dodaj akapit, obraz i tabelę do dokumentów programu Word
Apache POI XWPF umożliwia programistom dodawanie akapitów i obrazów do dokumentów programu Word. Interfejs API udostępnia również funkcję dodawania tabel do dokumentów DOCX, umożliwiając jednocześnie tworzenie prostych i zagnieżdżonych tabel z danymi zdefiniowanymi przez użytkownika.
Utwórz nowy plik DOCX z 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();
Wyodrębnij tekst z dokumentu Word OOXML
Apache POI XWPF zapewnia wyspecjalizowaną klasę do wyodrębniania danych z dokumentów Microsoft Word DOCX za pomocą zaledwie kilku linijek kodu. W ten sam sposób może również wyodrębniać nagłówki, przypisy, dane tabeli itd. z pliku Word.
Wyodrębnij tekst z pliku 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());
Dodaj niestandardowy nagłówek i stopkę do dokumentów DOCX
Nagłówek i stopka są ważną częścią dokumentu Word, ponieważ zwykle zawierają dodatkowe informacje, takie jak daty, numery stron, nazwisko autora i przypisy, które pomagają w uporządkowaniu dłuższych dokumentów i ich czytelności. Apache POI XWPF umożliwia programistom Java dodawanie niestandardowych nagłówków i stopek do dokumentów programu Word.
Zarządzaj niestandardowym nagłówkiem i stopką w pliku DOCX programu Word
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);
}
}
}
}