Đọc ghi file MS Word bằng Java với Apache POI

Đọc ghi file MS Word bằng Java với Apache POI

1. Apache POI là gì?

Apache POI là một thư viện mã nguồn mở cung cấp bởi apache được sử dụng để xử lý các file office như word, excel, powerpoint…

2. Các class chính của Apache POI Word

XWPFDocument: Được sử dụng để đọc ghi các file MS-Word với định dạng .docx (đọc, lưu file, thêm đoạn văn bản…)

XWPFParagraph: Được dùng để tạo đoạn paragraph trong tài liệu word. (Tùy chỉnh căn lề, border)

XWPFRun: Được sử dụng thể thêm text vào paragraph (Tùy chỉnh font, size…)

XWPFTable: Được dùng để thêm mới bảng vào file (Thêm cột, thêm dòng, cài đặt chiều rộng cho cột)

XWPFWordExtractor: Đây là class cơ bản được dùng để lấy text đơn giản từ tài liệu word (lấy tất cả text bên trong file word)

3. Đọc ghi file MS Word bằng Java với Apache POI

Thư viện sử dụng:

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.17</version>
</dependency>

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>3.17</version>
</dependency>

Ví dụ ghi file MS Word:

package stackjava.com.apachepoi.word.demo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

public class DemoWrite {
  public static void main(String[] args) throws IOException {
    // Create Blank document
    XWPFDocument document = new XWPFDocument();

    // Create new Paragraph
    XWPFParagraph paragraph1 = document.createParagraph();
    XWPFRun run = paragraph1.createRun();
    run.setText("Paragraph 1: stackjava.com");
    
    XWPFParagraph paragraph2 = document.createParagraph();
    run = paragraph2.createRun();
    run.setText("Paragraph 2: demo read/write file MS-Word");
    
    // Write the Document in file system
    FileOutputStream out = new FileOutputStream(new File("demo-apache-apoi-word.docx"));
    document.write(out);
    out.close();
    document.close();
    System.out.println("successully");
  }
}

Kết quả:

Đọc ghi file MS Word bằng Java với Apache POI

Ví dụ đọc file MS Word:

package stackjava.com.apachepoi.word.demo;

import java.io.FileInputStream;
import java.util.List;

import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

public class DemoRead {
  public static void main(String[] args) {
    try {
      FileInputStream fis = new FileInputStream("demo-apache-apoi-word.docx");
      XWPFDocument document = new XWPFDocument(OPCPackage.open(fis));
      List<XWPFParagraph> paragraphList = document.getParagraphs();
      for (XWPFParagraph paragraph : paragraphList) {
        System.out.println(paragraph.getText());
      }
      System.out.println("==============================");
      System.out.println("Read file using XWPFWordExtractor ");
      XWPFWordExtractor wordExtractor = new XWPFWordExtractor(document);
      System.out.println(wordExtractor.getText());
      wordExtractor.close();
      document.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

 

Kết quả:

Paragraph 1: stackjava.com
Paragraph 2: demo read/write file MS-Word
==============================
Read file using XWPFWordExtractor 
Paragraph 1: stackjava.com
Paragraph 2: demo read/write file MS-Word

 

Okay, Done!

Download code ví dụ trên tại đây

Xem thêm: Đọc ghi file MS-Excel bằng Java với Apache POI

References:

https://poi.apache.org/document/

stackjava.com