Задаване на формули в Excel с Apache POI

1. Общ преглед

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

2. Apache POI

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

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

За да видим Apache POI в действие, ще зададем формула за изваждане на сумата от стойностите в колони A и B във файл на Excel. Свързаният файл съдържа данните по-долу:

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

Първо, трябва да добавим зависимостта от POI към нашия проект pom.xml файл. За да работим с работни книги в Excel 2007+, трябва да използваме poi-ooxml :

 org.apache.poi poi-ooxml 4.1.2 

Имайте предвид, че за по-ранните версии на 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. Формули

След това искаме да зададем формула на клетката, която сме търсили.

Както беше посочено по-рано, нека извадим сумата от колона Б от сумата на колона А. В Excel това би било:

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

И ние можем да напиша, че в нашата formulaCell с setCellFormula метод:

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

Сега това няма да оцени формулата. За да направите това, ще трябва да използваме POI XSSFFormulaEvaluator :

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

Резултатът ще бъде зададен в първата клетка на следващата празна колона:

Както виждаме, резултатът се изчислява и записва в първата клетка на колона С. Също така формулата е показана в лентата с формули.

Обърнете внимание, че FormulaEvaluator класа ни дава и други методи за оценка на ФОРМУЛА в работни книги на Excel, като evaluateAll , който ще примка върху всички клетки и ги оценява.

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

В този урок показахме как да зададете формула на клетка в файл на Excel в Java с помощта на API на Apache POI.

Пълният изходен код за тази статияе достъпна в GitHub.