Apache POI: Uso de fórmulas y funciones excel

Para utilizar fórmulas excel en Apache POI, lo haremos utilizando el método setCellFormula("formula") de la clase HSSFCell. Al igual que desde Microsoft Excel, podemos utilizar formulas matemáticas (A1+B2+C3, B5*A2, …) o funciones propias de Excel (SUMA, CONTAR, MAX, …).

Cuando usemos funciones excel, debemos utilizar su nombre original. Microsoft Excel contiene traducciones para los nombres de las funciones, de forma que cuando abrimos un libro excel, los nombres de las funciones se muestran en el idioma del usuario. Sin embargo, internamente las funciones siempre se guardan con su nombre en inglés. Es por eso que necesitamos utilizar el nombre original de la función cuando manipulemos los archivos excel desde Apache POI. A continuación se muestra el enlace donde podremos consultar las funciones soportadas por Apache POI, además del nombre original de cada una de ellas.

 

Lista de funciones soportadas

Puedes consultar la lista de funciones excel soportadas por Apache POI en el siguiente enlace (Apéndice A):

Apache POI: Developing Formula Evaluation

 

Más información

Puedes consultar toda la documentación acerca del uso de formulas y funciones excel en Apache POI desde el sitio oficial del proyecto.

 

Código fuente

Para acompañar el artículo, tenemos un programa sencillo, que muestra un ejemplo de lo que sería un pedido. El ejemplo genera un archivo excel tal que así:

excel_with_formula Para la columna Subtotal (D) se utiliza una fórmula matemática simple (Bx*Cx). Mientras que para la celda que muestra el total del pedido (D22), hemos utilizado la función SUMA de excel (SUM(D2:D21)).

Puedes descargar su código fuente desde mi repositorio de GitHub (proyecto Poi-ExcelWithFormula).

 

Saludos!

2 comentarios en «Apache POI: Uso de fórmulas y funciones excel»

  1. Hola!..
    Estoy trabajando con Spring Roo y maven, me gustaría saber si desde mi vista puedo tener un boton de importar e importar mis tablas de la vista a un documento excel, tendría que llenar todos los datos a partir de un metodo en el controller o existe la posibilidad de mandar la tabla directamente al excel?

    • Hola Jose Alberto,

      Según entiendo, tienes unos datos en presentación, y los muestras como una tabla. Quieres sacar estos datos en un excel. Mi recomendación es que envíes los datos de la tabla a tu controller y ahí generar un excel a partir de estos datos.

      La generación del excels con POI es un poco rudimentaria, ya que tienes que ir definiendo el libro celda a celda. Pero con ayuda de código Java, seguro que puedes hacer esta tarea más automatizada.

      Gracias por tu comentario y un saludo

      Ángel

Leave a Reply to Ángel Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*