Учебники

Apache POI — Формула

Эта глава проведет вас через процесс применения различных формул к ячейкам с помощью Java-программирования. Основная цель приложения Excel — поддерживать числовые данные, применяя к ним формулы.

В формуле мы передаем динамические значения или местоположения значений на листе Excel. Выполнив эту формулу, вы получите желаемый результат. В следующей таблице перечислены несколько основных формул, которые часто используются в Excel.

операция Синтаксис
Добавление нескольких номеров = SUM (Loc1: Locn) или = SUM (n1, n2,)
подсчитывать = COUNT (Loc1: Locn) или = COUNT (n1, n2,)
Сила двух чисел = POWER (Loc1, Loc2) или = POWER (число, мощность)
Макс нескольких номеров = MAX (Loc1: Locn) или = MAX (n1, n2,)
Товар = ПРОДУКТ (Loc1: Locn) или = ПРОДУКТ (n1, n2,)
Факториал = ФАКТ (Locn) или = ФАКТ (число)
Абсолютное число = ABS (Locn) или = ABS (число)
Сегодня дата = СЕГОДНЯ ()
Преобразует строчные = НИЖНЯЯ (Locn) или = НИЖНЯЯ (текст)
Квадратный корень = SQRT (locn) или = SQRT (число)

Следующий код используется для добавления формул в ячейку и их выполнения.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Formula {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("formula");
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell = row.createCell(1);
      
      cell.setCellValue("A = ");
      cell = row.createCell(2);
      cell.setCellValue(2);
      row = spreadsheet.createRow(2);
      cell = row.createCell(1);
      cell.setCellValue("B = ");
      cell = row.createCell(2);
      cell.setCellValue(4);
      row = spreadsheet.createRow(3);
      cell = row.createCell(1);
      cell.setCellValue("Total = ");
      cell = row.createCell(2);
      
      // Create SUM formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SUM(C2:C3)");
      cell = row.createCell(3);
      cell.setCellValue("SUM(C2:C3)");
      row = spreadsheet.createRow(4);
      cell = row.createCell(1);
      cell.setCellValue("POWER =");
      cell=row.createCell(2);
      
      // Create POWER formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("POWER(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("POWER(C2,C3)");
      row = spreadsheet.createRow(5);
      cell = row.createCell(1);
      cell.setCellValue("MAX = ");
      cell = row.createCell(2);
      
      // Create MAX formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("MAX(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("MAX(C2,C3)");
      row = spreadsheet.createRow(6);
      cell = row.createCell(1);
      cell.setCellValue("FACT = ");
      cell = row.createCell(2);
      
      // Create FACT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("FACT(C3)");
      cell = row.createCell(3);
      cell.setCellValue("FACT(C3)");
      row = spreadsheet.createRow(7);
      cell = row.createCell(1);
      cell.setCellValue("SQRT = ");
      cell = row.createCell(2);
      
      // Create SQRT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SQRT(C5)");
      cell = row.createCell(3);
      cell.setCellValue("SQRT(C5)");
      workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
      FileOutputStream out = new FileOutputStream(new File("formula.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fromula.xlsx written successfully");
   }
}

Сохраните приведенный выше код как Formula.java, а затем скомпилируйте и выполните его из командной строки следующим образом.

$javac Formula.java
$java Formula

Он создаст файл Excel с именем Formula.xlsx в вашем текущем каталоге и отобразит следующий вывод в командной строке.

fromula.xlsx written successfully

Файл формула.xlsx выглядит следующим образом.