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).
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
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