Apache POI XWPF

 
 

API Java cho Tài liệu OOXML Word

Giải pháp mã nguồn mở để tạo, đọc, chỉnh sửa và chuyển đổi tệp Microsoft Word DOCX trong các ứng dụng Java.

Apache POI XWPF cung cấp chức năng đọc và ghi định dạng tệp DOCX của Microsoft Word 2007. XWPF có một API cốt lõi khá ổn định, cung cấp quyền truy cập vào các phần chính của tệp Word DOCX. Nó có thể được sử dụng để trích xuất văn bản cơ bản và cụ thể, thao tác với đầu trang và chân trang, thao tác văn bản và các tính năng tạo kiểu. 

Apache POI XWPF nổi tiếng hơn trong việc tạo tệp Microsoft Word & chỉnh sửa tài liệu, định dạng văn bản và đoạn văn, chèn hình ảnh, tạo bảng và phân tích cú pháp, tính năng trộn thư, quản lý các phần tử biểu mẫu, v.v.

Previous Next

Bắt đầu với Apache POI XWPF

Trước hết, bạn cần cài đặt Bộ phát triển Java (JDK) trên hệ thống của mình. Nếu bạn đã có thì hãy truy cập trang tải xuống của Apache POI để tải xuống bản phát hành ổn định mới nhất trong kho lưu trữ. Trích xuất nội dung của tệp ZIP trong bất kỳ thư mục nào từ đó các thư viện bắt buộc có thể được liên kết với chương trình Java của bạn. Đó là tất cả!

Tham chiếu Apache POI trong dự án Java dựa trên Maven của bạn thậm chí còn đơn giản hơn. Tất cả những gì bạn cần là thêm phần phụ thuộc sau vào pom.xml và cho phép IDE của bạn tìm nạp và tham chiếu các tệp Apache POI Jar.

Apache POI Maven Phụ thuộc

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

Tạo và chỉnh sửa tài liệu Word bằng Java API

Apache POI XWPF cho phép các lập trình viên phần mềm tạo các Tài liệu Word mới ở định dạng tệp DOCX. Các nhà phát triển cũng có thể tải tệp Microsoft Word DOCX hiện có để chỉnh sửa theo nhu cầu ứng dụng của họ. Nó cho phép bạn thêm đoạn văn mới, chèn văn bản, áp dụng căn chỉnh và đường viền văn bản, thay đổi kiểu văn bản, v.v.

Tạo tệp DOCX từ đầu

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

Thêm Đoạn văn, Hình ảnh & Bảng vào Tài liệu Word

Apache POI XWPF cho phép các nhà phát triển thêm đoạn văn và hình ảnh vào tài liệu Word. API cũng cung cấp tính năng thêm bảng vào tài liệu DOCX trong khi vẫn có thể tạo các bảng đơn giản và lồng nhau với dữ liệu do người dùng xác định.

Tạo tệp DOCX mới bằng bảng

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

Trích xuất văn bản từ tài liệu Word OOXML

Apache POI XWPF cung cấp lớp chuyên dụng để trích xuất dữ liệu từ tài liệu Microsoft Word DOCX chỉ với một vài dòng mã. Theo cách tương tự, nó cũng có thể trích xuất các tiêu đề, chú thích cuối trang, dữ liệu bảng, v.v. từ tệp Word.

Trích xuất văn bản từ tệp 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());

Thêm Đầu trang & Chân trang Tùy chỉnh vào Tài liệu DOCX

Đầu trang và chân trang là một phần quan trọng của tài liệu Word vì chúng thường chứa thông tin bổ sung như ngày tháng, số trang, tên tác giả và chú thích cuối trang, giúp giữ cho tài liệu dài hơn được sắp xếp và dễ đọc hơn. Apache POI XWPF cho phép các nhà phát triển Java thêm đầu trang và chân trang tùy chỉnh vào tài liệu Word.

Quản lý Đầu trang & Chân trang Tùy chỉnh trong Tệp 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);
      }
    }
  }
}
 Tiếng Việt