Перейти к основному содержимому

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

· 3 мин. чтения

Задача: Медиана двух отсортированных массивов

Даны два отсортированных массива размерами n и m. Найдите медиану слияния этих двух массивов.
Временная сложность решения должна быть O(log(m + n)) ...

ANDROMEDA

1. Обзор

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

2. Апач POI

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

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

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

./e258adcc1b2fd82f11ddd607ffbdbf7a.png

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

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

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

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

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)

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

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

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

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

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

./0acec79ffda98fad80a9beedd6e329f7.png

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

Обратите внимание, что класс FormulaEvaluator предоставляет нам другие методы для оценки ФОРМУЛЫ в книгах Excel, например , AssessmentAll , который будет перебирать все ячейки и оценивать их .

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

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

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