Apache POI - Fórmula

Este capítulo o conduz pelo processo de aplicação de fórmulas diferentes em células usando a programação Java. O objetivo básico do aplicativo Excel é manter os dados numéricos aplicando fórmulas sobre eles.

Em uma fórmula, passamos valores dinâmicos ou localizações dos valores na planilha do Excel. Ao executar esta fórmula, você obtém o resultado desejado. A tabela a seguir lista algumas fórmulas básicas usadas com freqüência no Excel.

Operação Sintaxe
Adicionando vários números = SUM (Loc1: Locn) or = SOMA (n1, n2,)
Contagem = COUNT (Loc1: Locn) or = CONTAGEM (n1, n2,)
Potência de dois números = POTÊNCIA (Loc1, Loc2) or = POTÊNCIA (número, potência)
Máximo de vários números = MAX (Loc1: Locn) or = MAX (n1, n2,)
produtos = PRODUTO (Loc1: Locn) or = PRODUTO (n1, n2,)
Fatorial = FATO (Locn) or = FATO (número)
Número absoluto = ABS (Locn) or = ABS (número)
Data de hoje = HOJE ()
Converte letras minúsculas = INFERIOR (Locn) or = INFERIOR (texto)
Raiz quadrada = SQRT (locn) or = SQRT (número)

O código a seguir é usado para adicionar fórmulas a uma célula e executá-la.

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");
   }
}

Salve o código acima como Formula.java e então compilar e executá-lo a partir do prompt de comando da seguinte maneira.

$javac Formula.java
$java Formula

Ele irá gerar um arquivo Excel chamado formula.xlsx em seu diretório atual e exiba a seguinte saída no prompt de comando.

fromula.xlsx written successfully

o formula.xlsx arquivo tem a seguinte aparência.