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 .