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í:
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!
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