Establecer fórmulas en Excel con Apache POI

1. Información general

En este tutorial rápido, vamos a hablar sobre cómo podemos configurar fórmulas en una hoja de cálculo de Microsoft Excel usando Apache POI a través de un ejemplo simple.

2. Apache POI

Apache POI es una popular biblioteca de Java de código abierto que proporciona a los programadores API para crear, modificar y mostrar archivos de MS Office .

Utiliza Workbook para representar un archivo de Excel y sus elementos. Una celda en un archivo de Excel puede tener diferentes tipos, como FÓRMULA .

Para ver Apache POI en acción, vamos a establecer una fórmula para restar la suma de los valores en las columnas A y B en un archivo de Excel. El archivo vinculado contiene los datos siguientes:

3. Dependencias

Primero, necesitamos agregar la dependencia de POI a nuestro archivo pom.xml de proyecto . Para trabajar con libros de Excel 2007+, debemos usar poi-ooxml :

 org.apache.poi poi-ooxml 4.1.2 

Tenga en cuenta que para versiones anteriores de Excel, deberíamos usar la dependencia de poi en su lugar.

4. Búsqueda de celda

Para comenzar, primero abramos nuestro archivo y construyamos el libro de trabajo apropiado:

FileInputStream inputStream = new FileInputStream(new File(fileLocation)); XSSFWorkbook excel = new XSSFWorkbook(inputStream);

Luego, necesitamos crear o buscar la celda que vamos a usar . Usando los datos compartidos anteriormente, queremos editar la celda C1.

Eso está en la primera hoja y en la primera fila, y podemos pedirle a POI la primera columna en blanco:

XSSFSheet sheet = excel.getSheetAt(0); int lastCellNum = sheet.getRow(0).getLastCellNum(); XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1);

5. Fórmulas

A continuación, queremos establecer una fórmula en la celda que buscamos.

Como se indicó anteriormente, restemos la suma de la columna B de la suma de la columna A. En Excel, esto sería:

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

Y podemos escribir eso en nuestra formulaCell con el método setCellFormula :

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

Ahora, esto no evaluará la fórmula. Para hacer eso, necesitaremos usar el XSSFFormulaEvaluator de POI :

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

El resultado se establecerá en la primera celda de la siguiente columna vacía:

Como podemos ver, el resultado se calcula y se guarda en la primera celda de la columna C. Además, la fórmula se muestra en la barra de fórmulas.

Tenga en cuenta que la clase FormulaEvaluator nos proporciona otros métodos para evaluar FÓRMULA en libros de Excel, como evaluaTodo , que recorrerá todas las celdas y las evaluará.

6. Conclusión

En este tutorial, mostramos cómo establecer una fórmula en una celda en un archivo de Excel en Java usando la API de Apache POI.

El código fuente completo de este artículoestá disponible en GitHub.