Inicio Programación Tratamiento de documentos Excel en Java (2)

Tratamiento de documentos Excel en Java (2)

por sgoliver

Como dicen que más vale tarde que nunca, aquí va el segundo artículo de la serie dedicada al tratamiento de documentos Excel desde el lenguaje Java.

En este articulo repasaré la segunda de las opciones a la hora de enfrentarse a una tarea de este tipo, que como ya dijimos, consiste en utilizar alguna de las APIs específicas desarrolladas con este objetivo. Las dos APIs más conocidas son las de Jakarta POI y JExcelApi. Tras evaluar ambas sólo puedo llegar a la conclusión de que son muy parecidas, aunque existen algunas diferencias que resumiré más abajo.

Jakarta POI

POI es una api java que nos permitirá leer, escribir y modificar documentos excel con suma facilidad, aunque como bien indican en su web oficial, la funcionalidad de escritura es la más madura. Con esta API podremos manipular fácilmente muchas de las entidades existentes en un documento excel: libros, hojas, filas, celdas, fórmulas, etc. Sin embargo, a la hora de considerar esta herramienta también deberemos tener en cuenta algunas limitaciones, como el no soportar la creación de gráficas, celdas con varios formatos, macros o tablas dinámicas, aunque sí podremos modificar o leer documentos que contengan estos elementos sin riesgo a perderlos.

Veamos un ejemplo de lo sencillo que resulta crear y escribir en un documento excel:

//Se crea el libro Excel
HSSFWorkbook wb = new HSSFWorkbook();

//Se crea una nueva hoja dentro del libro
HSSFSheet sheet = wb.createSheet("HojaEjemplo");

//Se crea una fila dentro de la hoja
HSSFRow row = sheet.createRow((short)0);

//Creamos celdas de varios tipos
row.createCell((short)0).setCellValue(1);
row.createCell((short)1).setCellValue(1.2);
row.createCell((short)2).setCellValue("ejemplo");
row.createCell((short)3).setCellValue(true);

Por cuestiones de espacio, sólo muestro en el artículo este pequeño fragmento de código. Sin embargo, podéis consultar un pequeño programa de demostración completo que he escrito para mostrar lo fácil que resulta leer y escribir documentos excel con esta API.

En cuanto a la documentación disponible, he decir que a parte de la inevitable documentación javadoc, la API viene acompañada de una guía rápida con muchos ejemplos sencillos que cubren gran parte de la funcionalidad de la misma. Esta guía, aunque no demasiado extensa, es más que suficiente para aprender a utilizar rápido muchas de las características disponibles.

Como puntos "negativos" puedo mencionar que toda la documentación se encuentra en inglés (como no podía ser de otra forma) y que el proyecto parece haber estado "muerto" bastante tiempo, aunque parece que el desarrollo se ha retomado hace poco, ya que existe una versión DEV de junio de 2006. La última versión estable de la librería es la 2.5.1, de agosto de 2004.

Referencias:

  1. Web Oficial Jakarta POI [Inglés]
  2. Web Oficial Jakarta POI [Español]
  3. Artículo sobre POI en JavaWorld.com [Inglés]
  4. Artículo sobre POI en OnJava.com [Inglés]

JExcelApi

Al igual que POI, JExcelApi es una API destinada a facilitar la lectura, escritura y modificación de documentos excel desde aplicaciones java. Los objetos y métodos disponibles son muy similares a los que hemos visto para POI, siendo súmamente sencillo manipular libros, hojas y celdas de un documento excel. En el fragmento siguiente se muestra como realizar las mismas acciones del ejemplo anterior (crear un libro y escribir varias celdas con distintos tipos de datos), pero esta vez usando JExcelApi:

//Se crea el libro Excel
WritableWorkbook workbook =
Workbook.createWorkbook(new File("ejemplo.xls"));

//Se crea una nueva hoja dentro del libro
WritableSheet sheet =
workbook.createSheet("HojaEjemplo", 0);

//Creamos celdas de varios tipos
sheet.addCell(new jxl.write.Number(0, 0, 1));
sheet.addCell(new jxl.write.Number(1, 0, 1.2));
sheet.addCell(new jxl.write.Label(2, 0, "ejemplo"));
sheet.addCell(new jxl.write.Boolean(3,0,true));

Igualmente, se proporciona un ejemplo completo (análogo al mostrado para POI) de cómo leer y escribir un documento excel con JExcelApi.

JExcelApi también viene acompañado de una documentación muy completa en formato javadoc y de un pequeño tutorial con varios ejemplos de cómo realizar las acciones típicas sobre un documento. Esta API tiene también actualmente algunas limitaciones, como por ejemplo no permitirse la creación de gráficas o macros. Por suerte, como ocurría con POI, sí podremos al menos leer o modificar documentos que ya contengan estos elementos sin perderlos durante el proceso.

Este proyecto sí se encuentra actualmente activo y en desarrollo, siendo la última versión estable de la librería, la 2.6.2, de octubre de 2006.

Por último, como curiosidad, mencionar que existe un proyecto para portar a la plataforma .NET esta API java. Dicho proyecto recibe el nombre de NExcel y actualmente existe una versión alpha de febrero de 2005.

Referencias:

  1. Web Oficial del proyecto en SourceForge [Inglés]
  2. Web original de la API [Inglés]
  3. Web de NExcel (versión en .NETde la API) [Inglés]

También te puede interesar

12 comentarios

skuarch 18/03/2009 - 19:12

gracias por tomarte el tiempo y enseñar como se leen archivos en excel, me sirvio de mucho ! ! !

Responder
hh 20/04/2009 - 19:50

Me sirvio mucho tu articulo…andaba bien perdida
Gracias por ayudar!!!!!

Responder
a 28/04/2009 - 12:00

y como se edita???????? por que si haces un writable te crea un fichero nuevo, estoy perdida

Responder
BlueSalomon 02/06/2009 - 15:01

Gracias por el dato me fue de gran ayuda

Responder
Luis 09/07/2009 - 10:18

bueno quisiera saber como se hace para q sigua agregando mas datos en las filas sin borrar lo que ingrese antes x el writetable hace eso me vuelve a crear un nuevo .xls

Responder
Mayra 21/09/2009 - 4:30

hola!!

Es la primera vez que utilizo jakarta poi y tengo una duda verdaderamente urgente!! estoy por terminar una aplicacion de escritorio con netbeans en lacual genero tres consultas ke se muestran en tablas dentro de internal frames esta trabaja super cuando esta en mi makina pero cuando corroel archivo jar en otra makina el boton para entrar aesa ventana no funciona!!me podrias ayudar? las libreriasya las agregue al proyecto desde las propiedades y a la carpeta de java!!

Espero sus respuestas GRACIAS!!!

Responder
Litzy 22/09/2009 - 20:21

Muchas gracias! Valiosa información, es la primera vez que lo uso y me resultó muy útil y sencillo.

Responder
roberto 29/06/2010 - 18:34

Hola buen material pero como le haces para que se agreguen los acentos y las ñ, ya que este codigo no lo hace :S

Responder
Jonatan 28/06/2011 - 17:07

Como hago para cargar la librería Jakarta POI……gracias

Responder
jesus 15/11/2011 - 15:58

HE INTENTADO OBTENER EL TEXTO SIN FORMATO DE UNA HOJA DE EXCEL CON EL API «POI», SOLO QUE NO TIENE ESA FUNCIONALIDAD, O SI LA TIENE NO HE PODIDO IMPLEMENTARLO, ALGUIEN SABE?

Responder
jsbp 21/02/2012 - 23:05

me gustaría saber si esto también es posible en j2me(blacberry)o existe alguna forma de hacerlo en esa plataforma! gracias.

Responder
Ron 23/03/2012 - 18:22

Con una aplicación que corre con jdk 1.3 puedo utilizar el jexcel??? el jexcel me permite manipular las celdas, es decir darle tamaño, color, bordes etc??

Responder

Responder a hh Cancelar respuesta

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. Aceptar Más Información

Política de Privacidad y Cookies