Apache POI SXSSF la API para escribir grandes hojas de Excel

Muchos conocemos las API POI-HSSF y POI-XSSF que son geniales para lectura, escritura o formato de documento Microsoft Excel, pero igual sabemos que principalmente XSSF come memoria cual si fuera ilimitada y barata. Por eso los chicos del proyecto Apache POI se decidieron crear SXSSF, una versión que extiende de XSSF pero con un consumo bajo de memoria gracias a que limita el acceso a un número definido de “filas” del documento en lugar de alojar todas como su contraparte. Por eso podemos llamar a está API de POI como la opción para los pobres (De los cuales me incluyo), ya que no hay necesidad de subir la memoria usada para el heap size si queremos crear documentos con números exagerados de filas.

SXSSF esta disponible desde POI 3.8 beta 3, la cual es compatible con XSSF, pero con ciertas limitaciones:

  • Solo un numero de filas estaran disponibles en ciertos momentos, es decir, disponibilidad parcial de la hoja de calculo para ahorrar memoria.
  • El metodo sheet.clone() no es soportado.
  • La evaluacion de formulas no es soportada.

Para más información en POI-HSSF and POI-XSSF – Java API To Access Microsoft Excel Format Files.

Aumentar la memoria usada por Websphere 8, u otras versiones.

Una de las cosas que más odio de los servidores de aplicaciones para la plataforma Java es que no es muy transparente el hecho de que en algunos casos es recomendable aumentar la memoria. Se que el error java.langOutOfMemory es un grito de auxilio del servidor por más recursos y que tal vez la solución de aumentar la memoria sea un placebo al verdadero problema de la arquitectura o del código.

Si estás aquí no es porque desees saber de mejores practicas, así que vamos al grano:

  1. Crea un nuevo server profile.
  2. Ve a la consola del websphere application server.
  3. Elimina todas las aplicaciones instaladas previamente. (All default applications).
  4. Ve a la consola Web del sistema, comúnmente http://localhost:9063/ibm/console/ (otro puerto posible es el 9060).
  5. Ve al modulo SERVER.
  6. Abre WebSphere application Servers.
  7. Selecciona tu servidor, por lo general se puede encontrar el servidor server1.
  8. Buscar la sección Server Infrastructure, dar clic en Java and process management y después en Process Definition.
  9. Al abrirse ese módulo buscar la sección Additional Properties y dar clic en Java virtual machine
  10. Ya ahí buscar los campos 512 y a 2048 (O lo que se posible)