1. Обзор
В этом кратком руководстве мы поговорим о том, как мы можем установить формулы в электронной таблице Microsoft Excel, используя Apache POI , на простом примере.
2. Апач POI
Apache POI — это популярная библиотека Java с открытым исходным кодом, которая предоставляет программистам API для создания, изменения и отображения файлов MS Office.
Он использует Workbook
для представления файла Excel и его элементов. Ячейка в файле
Excel может иметь разные типы, например FORMULA
.
Чтобы увидеть Apache POI в действии, мы установим формулу для вычитания суммы значений в столбцах A и B в файле Excel . Связанный файл содержит следующие данные:
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);
Результат будет установлен в первой ячейке
следующего пустого столбца:
Как мы видим, результат вычисляется и сохраняется в первой ячейке столбца C. Также формула отображается в строке формул.
Обратите внимание, что класс FormulaEvaluator
предоставляет нам другие методы для оценки ФОРМУЛЫ
в книгах Excel, например , AssessmentAll , который будет перебирать все ячейки и оценивать их .
6. Заключение
В этом руководстве мы показали, как установить формулу для ячейки в файле Excel на Java с помощью API Apache POI.
Полный исходный код этой статьи `` доступен на GitHub .