Apache POI XWPF
Java API untuk Word OOXML Documents
Solusi Open Source untuk Membuat, Membaca, Mengedit, dan Mengonversi file DOCX Microsoft Word di aplikasi Java.
Apache POI XWPF menyediakan fungsionalitas untuk membaca & menulis format file DOCX Microsoft Word 2007. XWPF memiliki API inti yang cukup stabil, menyediakan akses ke bagian utama file DOCX Word. Ini dapat digunakan untuk ekstraksi teks dasar & spesifik, manipulasi header & footer, manipulasi teks & fitur gaya.
Apache POI XWPF lebih terkenal untuk pembuatan file & pengeditan dokumen Microsoft Word, pemformatan teks & paragraf, penyisipan gambar, pembuatan & penguraian tabel, fitur gabungan surat, pengelolaan elemen formulir, dan banyak lagi.
Memulai Apache POI XWPF
Pertama-tama, Anda harus menginstal Java Development Kit (JDK) di sistem Anda. Jika Anda sudah memilikinya, lanjutkan ke halaman unduh Apache POI untuk mendapatkan rilis stabil terbaru dalam arsip. Ekstrak konten file ZIP di direktori mana pun dari mana pustaka yang diperlukan dapat ditautkan ke program Java Anda. Itu semuanya!
Merujuk Apache POI dalam proyek Java berbasis Maven Anda bahkan lebih sederhana. Yang Anda butuhkan hanyalah menambahkan dependensi berikut di pom.xml Anda dan biarkan IDE Anda mengambil dan mereferensikan file Apache POI Jar.
Ketergantungan 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>
Hasilkan & Edit Dokumen Word menggunakan Java API
Apache POI XWPF memungkinkan pemrogram perangkat lunak untuk membuat Dokumen Word baru dalam format file DOCX. Pengembang juga dapat memuat file DOCX Microsoft Word yang ada untuk mengeditnya sesuai dengan kebutuhan aplikasi mereka. Ini memungkinkan Anda untuk menambahkan paragraf baru, menyisipkan teks, menerapkan perataan & batas teks, mengubah gaya teks, dan banyak lagi.
Hasilkan file DOCX dari awal
// 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();
Tambahkan Paragraf, Gambar & Tabel ke Dokumen Word
Apache POI XWPF memungkinkan pengembang untuk menambahkan paragraf & gambar ke dokumen Word. API juga menyediakan fitur untuk menambahkan tabel ke dokumen DOCX sekaligus memungkinkan pembuatan tabel sederhana dan bertingkat dengan data yang ditentukan pengguna.
Buat file DOCX baru dengan 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();
Ekstrak Teks dari Dokumen Word OOXML
Apache POI XWPF menyediakan kelas khusus untuk mengekstrak data dari dokumen Microsoft Word DOCX hanya dengan beberapa baris kode. Dengan cara yang sama, itu juga dapat mengekstrak judul, catatan kaki, data tabel, dan sebagainya dari file Word.
Ekstrak teks dari file 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());
Tambahkan Header & Footer Kustom ke Dokumen DOCX
Header dan footer adalah bagian penting dari dokumen Word karena biasanya berisi informasi tambahan seperti tanggal, nomor halaman, nama penulis, dan catatan kaki, yang membantu mengatur dokumen yang lebih panjang dan lebih mudah dibaca. Apache POI XWPF memungkinkan pengembang Java untuk menambahkan header dan footer khusus ke dokumen Word.
Kelola Header & Footer Kustom di File DOCX 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);
}
}
}
}