Cách sử dụng công thức trong apache POI cho file excel

Chắc hẳn khi làm việc với các tập tin excel việc sử dụng các công thức là một phần không thể thiếu bởi các lập trình viên đang làm việc trên đó. Ngoài ra, hầu hết các tài liệu Excel đều có nhúng công thức. Bởi vì sự phổ biên này Apache POI cũng đã hỗ trợ các phương thức cho phép đặt các công thức trong file excel mà trong bài viết này chúng ta sẽ cùng nhau tìm hiểu.

Dependency

Đầu tiên, chúng ta cần thêm phụ thuộc POI vào tệp pom.xml của dự án. Để làm việc với sổ làm việc Excel 2007+, chúng ta nên sử dụng poi-ooxml:

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

Lưu ý rằng đối với các phiên bản Excel trước, chúng ta nên sử dụng phụ thuộc poi để thay thế.

Cài đặt công thức cho các Cell

Đầu tiên, để đặt công thức chô một cell(ô) trong file excel chúng ta có thể viết như sau

cell.setCellFormula("SUM(D2:D10)");

Đoạn code trên đặt công thức tính toán và lưu trữ tổng của các ô ở các vị trí từ D2 đến D10 vào ô này. Lưu ý rằng công thức chính xác như chúng ta nhập trong Excel nhưng không có dấu bằng (=) ở đầu.

Dòng mã sau đặt công thức cho ô ở hàng # 3 và cột # 4 (hãy nhớ chỉ mục dựa trên 0):

	
sheet.getRow(3).getCell(4).setCellFormula("SUM(D2:D10)");

Trong dòng trên, lưu ý rằng bạn nên đảm bảo rằng ô ở vị trí (3, 4) tồn tại, nếu không bạn nhận được một NullPointerException.

Giả sử chúng ta muốn có một file excel như sau, Lưu ý rằng công thức của ô C9 là SUM (C5: C7).

Excel_formula_before_update

Giờ chúng ta sẽ viết chương trình cập nhật công thức này lại thành SUM (C5: C7) + SUM (C5: C7) * 0.1.

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
public class ExcelFormulaUpdateDemo {
 
    public static void main(String[] args) throws IOException {
        String excelFilePath = "JavaBooks4Beginner.xlsx";
        FileInputStream inputStream = new FileInputStream(new File(excelFilePath));
 
        Workbook workbook = new XSSFWorkbook(inputStream);
        Sheet sheet = workbook.getSheetAt(0);
 
        sheet.getRow(8).getCell(2).setCellFormula("SUM(C5:C7) + SUM(C5:C7) * 0.1");
         
        inputStream.close();
         
        FileOutputStream outputStream = new FileOutputStream(excelFilePath);
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
    }
 
}

Output

Excel_formula_after_update

Nguồn

https://www.baeldung.com/java-apache-poi-set-formulas

https://www.codejava.net/coding/working-with-formula-cells-in-excel-using-apache-poi

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x