Рубрики
Без рубрики

Настройка формул в Excel с помощью Apache POI

Узнайте, как устанавливать и оценивать формулы Excel на Java с помощью Apache POI

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы поговорим о том, как мы можем задавать формулы в электронной таблице Microsoft Excel с помощью Apache POI | на простом примере.

2. POI Apache

Apache POI-это популярная библиотека Java с открытым исходным кодом, которая предоставляет программистам API для создания, изменения и отображения файлов MS Office .

Он использует Workbook для представления файла Excel и его элементов. Ячейка в файле Excel может иметь различные типы, такие как ФОРМУЛА .

Чтобы увидеть POI Apache в действии, мы установим формулу для вычитания суммы значений в столбцах A и B в файле Excel . Связанный файл содержит следующие данные:

3. Зависимости

Во-первых, нам нужно добавить зависимость POI в ваш проект pom.xml файл. Для работы с книгами Excel 2007+ мы должны использовать poi-ooxml :


    org.apache.poi
    poi-ooxml
    4.1.2

Обратите внимание, что для более ранних версий Excel мы должны использовать точка вместо этого зависимость.

4. Поиск ячеек

Для начала давайте сначала откроем наш файл и создадим соответствующую рабочую книгу:

FileInputStream inputStream = new FileInputStream(new File(fileLocation));
XSSFWorkbook excel = new XSSFWorkbook(inputStream);

Затем нам нужно создать или найти ячейку, которую мы будем использовать . Используя данные, которыми мы поделились ранее, мы хотим отредактировать ячейку C1.

Это на первом листе и в первой строке, и мы можем запросить POI для первого пустого столбца:

XSSFSheet sheet = excel.getSheetAt(0);
int lastCellNum = sheet.getRow(0).getLastCellNum();
XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1);

5. Формулы

Затем мы хотим задать формулу для ячейки, которую мы искали.

Как было сказано ранее, давайте вычтем сумму столбца B из суммы столбца A. В Excel это было бы:

=SUM(A:A)-SUM(B:B)

И мы можем записать это в нашу ячейку формулы с помощью метода setCellFormula :

formulaCell.setCellFormula("SUM(A:A)-SUM(B:B)");

Теперь это не будет оценивать формулу. Для этого нам нужно будет использовать POI XSSFFormulaEvaluator :

XSSFFormulaEvaluator formulaEvaluator = 
  excel.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateFormulaCell(formulaCell);

Результат будет установлен в первой ячейке следующего пустого столбца:

Как мы видим, результат вычисляется и сохраняется в первой ячейке столбца C. Также формула отображается в строке формул.

Обратите внимание, что класс Formula Evaluator предоставляет нам другие методы для оценки FORMULA в книгах Excel , такие как evaluateAll , которые будут перебирать все ячейки и оценивать их.

6. Заключение

В этом уроке мы показали, как задать формулу для ячейки в файле Excel на Java с помощью API Apache POI.

Полный исходный код этой статьи доступен на GitHub .