Java: Cách tạo và chèn dữ liệu vào file Excel

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Trong Java, việc đọc tệp excel và ghi tệp excel có một chút khó khăn vì trang tính Excel có các ô để lưu trữ dữ liệu. Java không cung cấp API trực tiếp để đọc hoặc viết các tài liệu Microsoft Excel hoặc Word. Ta sẽ phải dựa vào thư viện của bên thứ ba là Apache POI. Trong phần này, chúng ta sẽ học cách tạo một tệp excel bằng Java và cách ghi hoặc chèn dữ liệu vào tệp excel bằng thư viện Apache POI Java.

1. Thư viện POI Java Apache

Apache POI (Thực hiện giải mã kém) là một API Java để đọc và ghi Tài liệu Microsoft. Nó chứa các lớp và giao diện. Thư viện Apache POI cung cấp hai cách triển khai để đọc hoặc ghi tệp excel:

  • Triển khai HSSF (Horrible SpreadSheet Format): Nó biểu thị một API đang hoạt động với Excel 2003 hoặc các phiên bản cũ hơn.
  • Triển khai XSSF (XML SpreadSheet Format): Nó biểu thị một API đang hoạt động với phiên bản Excel 2007 trở lên.

Trong phần này sẽ sẽ sử dụng triển khai HSSF.

2. Tạo file Excel trong Java

Làm theo các bước dưới đây để tạo một tệp excel trong Java.

Bước 1: Tạo một dự án Java với tên CreateExcelFile từ IntelliJ.

Bước 2: Tạo một lớp tên CreateExcelFileExample1.

Bước 2: Tải xuống thư viện Apache POI ( poi-3.17.jar).

Bước 4: Thêm Apache POI vào dự án: Nhấp chuột phải vào dự án -> Open Module Settings (hoặc F4) -> sẽ mở cửa sổ Project Structure.

Bước 5: Nhấp chọn Libraries sau đó nhấn dấu + và chọn Java như hình dưới:

Java Tạo tệp Excel

Bước 6: Tìm đến nơi chứa file poi-3.17.jar rồi chọn và nhấp vào nút OK. Điều này sẽ thêm tệp JAR vào dự án. Sau đó, nhấp vào nút Apply để áp dụng các thay đổi rồi nhấn nút OK.

Java Tạo tệp Excel

Sau khi đã hoàn thành tất cả các bước trên, cấu trúc dự án sẽ giống như sau:

Java Tạo tệp Excel

Giờ ta sẽ tiếp tục với các đoạn mã:

Trong chương trình sau, ta sử dụng thư viện Apache POI để tạo một file excel. Thư viện cung cấp lớp có tên HSSFWorkbook được định nghĩa trong gói org.apache.poi.hssf.usermodel.

CreateExcelFileExample1.java

import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;

public class CreateExcelFileExample1 {
  public static void main(String[] args) throws IOException {
    //tạo đối tượng của lớp Workbook
    Workbook wb = new HSSFWorkbook();
    //tạo một file excel tại vị trí đã định
    OutputStream fileOut = new FileOutputStream("E:\\Courses\\Java\\CreateExcelFile\\Excel1.xlsx");
    System.out.println("File Excel đã được tạo thành công.");
    wb.write(fileOut);
    //đóng stream
    fileOut.close();
    //đóng workbook
    wb.close();
  }
}

Kết quả:

"C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\jbr\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\lib\idea_rt.jar=58544:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\bin" -Dfile.encoding=UTF-8 -classpath E:\Courses\Java\CreateExcelFile\out\production\CreateExcelFile;E:\Courses\Java\CreateExcelFile\poi-3.17.jar CreateExcelFileExample1
File Excel đã được tạo thành công.

Ta đã tạo được một file excel trống tại vị trí được chỉ định.

Java Tạo tệp Excel

Giờ ta tạo một chương trình Java khác để tạo một tệp excel.

CreateExcelFileExample2.java

import java.io.*;

public class CreateExcelFileExample2 {
  public static void main(String[] args) {
    try {
      String filename = "C:\\Users\\Anubhav\\Desktop\\CustomersDetail.xlsx";
      FileOutputStream fileOut = new FileOutputStream(filename);
      fileOut.close();
      System.out.println("File Excel được tạo thành công.");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Kết quả:

"C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\jbr\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\lib\idea_rt.jar=58581:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\bin" -Dfile.encoding=UTF-8 -classpath E:\Courses\Java\CreateExcelFile\out\production\CreateExcelFile;E:\Courses\Java\CreateExcelFile\poi-3.17.jar CreateExcelFileExample2
File Excel được tạo thành công.

Ta đã tạo được một tệp excel trống tại vị trí được chỉ định.

Java Tạo tệp Excel

3. Tạo và chèn dữ liệu vào file Excel

Dưới đây là một ví dụ về cách tạo một file Excel và chèn dữ liệu vào nó:

CreateExcelFileExample3.java

import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;

public class CreateExcelFileExample3 {
  public static void main(String[] args) {
    try {
      //khai báo tên file muốn tạo
      String filename = "E:\\Courses\\Java\\CreateExcelFile\\Excel3.xlsx";
      //tạo một đối tượng của lớp HSSFWorkbook
      HSSFWorkbook workbook = new HSSFWorkbook();
      //gọi phương thức creatSheet() và truyền tên file muốn tạo
      HSSFSheet sheet = workbook.createSheet("January");
      //tạo hàng thứ 0 sử dụng phương thức createRow()
      HSSFRow rowhead = sheet.createRow((short) 0);
      //tạo ô bằng cách sử dụng phương thức createCell() và thiết lập giá trị cho ô bằng cách sử dụng phương thức setCellValue()
      rowhead.createCell(0).setCellValue("S.No.");
      rowhead.createCell(1).setCellValue("Customer Name");
      rowhead.createCell(2).setCellValue("Account Number");
      rowhead.createCell(3).setCellValue("e-mail");
      rowhead.createCell(4).setCellValue("Balance");
      //tạo hàng thứ 1
      HSSFRow row = sheet.createRow((short) 1);
      //chèn dữ liệu vào hàng thứ 1
      row.createCell(0).setCellValue("1");
      row.createCell(1).setCellValue("John William");
      row.createCell(2).setCellValue("9999999");
      row.createCell(3).setCellValue("william.john@gmail.com");
      row.createCell(4).setCellValue("700000.00");
      //tạo hàng thứ 2
      HSSFRow row1 = sheet.createRow((short) 2);
      //chèn dữ liệu vào hàng thứ 2
      row1.createCell(0).setCellValue("2");
      row1.createCell(1).setCellValue("Mathew Parker");
      row1.createCell(2).setCellValue("22222222");
      row1.createCell(3).setCellValue("parker.mathew@gmail.com");
      row1.createCell(4).setCellValue("200000.00");
      FileOutputStream fileOut = new FileOutputStream(filename);
      workbook.write(fileOut);
      //đóng stream
      fileOut.close();
      //đóng workbook
      workbook.close();
      //in thông báo tạo thành công
      System.out.println("File Excel đã được tạo thành công.");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Kết quả:

"C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\jbr\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\lib\idea_rt.jar=58597:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\bin" -Dfile.encoding=UTF-8 -classpath E:\Courses\Java\CreateExcelFile\out\production\CreateExcelFile;E:\Courses\Java\CreateExcelFile\poi-3.17.jar CreateExcelFileExample3
File Excel đã được tạo thành công.

Nó tạo một tệp excel tại vị trí được chỉ định với các giá trị mà ta đã chèn bằng cách sử dụng phương thức setCellValue().

Java Tạo tệp Excel

» Tiếp: Java DOM Parser - Đọc, tạo, sửa tài liệu XML
« Trước: Kế thừa mã lệnh tập tin I/O
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!