Crear archivo Excel desde Java con POI

De ChuWiki
Saltar a: navegación, buscar

En este ejemplo vamos a crear una hoja Excel desde Java usando la librería POI. Para ello, lo primero es descargarse la librería POI desde su página de descargas http://www.apache.org/dyn/closer.cgi/poi/

Una vez descargada y desempaquetada, tendremos una serie de jars que deberemos añadir a nuestro proyecto Java o a nuestro CLASSPATH. En el momento de escribir este ejemplo, los jar obtenidos eran

  • poi-3.0.2-FINAL-20080204.jar
  • poi-scratchpad-3.0.2-FINAL-20080204.jar
  • poi-contrib-3.0.2-FINAL-20080204.jar

Estando todo preparado, ya podemos escribir nuestro programa Java. Lo primero de todo, es crear lo que en Excel se conoce como un libro de trabajo (workbook). Este será nuestro "Excel".

HSSFWorkbook libro = new HSSFWorkbook();

Un libro de trabajo tiene hojas, así que debermos añadir al menos una hoja

HSSFSheet hoja = libro.createSheet();

A la hoja debemos añadirle las filas que deseemos. Para nuestro ejemplo, nos bastará con una. La numeración empieza en cero.

HSSFRow fila = hoja.createRow(0);

Finalemente, a la fila debemos añadirle la celda/columna que queramos usar. Nuevamente, el índice empieza en cero, pero esta vez admite short y no int.

HSSFCell celda = fila.createCell((short)0);

Una vez que tenemos la celda, ya sólo nos resta escribir en ella lo que queramos: una fórmula, un número, un booleano, un texto, etc. Para ello usaremos los métodos de la celda HSSFCell. En nuestro caso y por se el más complejo, lo haremos para un String. El método setCellValue(String) está obsoleto, así que usaremos el método setCellValue(HSSFRichTextString), que vale para lo mismo pero admite un "texto rico", es decir, con distintas fuentes.

HSSFRichTextString texto = new HSSFRichTextString("hola mundo");
celda.setCellValue(texto);

Listo, ya tenemos una hoja de Excel muy sencilla con un "hola mundo" en la primera celda de la tabla. Sólo nos queda grabar el fichero. Para ello, usamos el método write() del HSSFWorkbook

try {
   FileOutputStream elFichero = new FileOutputStream("holamundo.xls");
   libro.write(elFichero);
   elFichero.close();
} catch (Exception e) {
   e.printStackTrace();
}

Y ahora el código completo para este ejemplo de Excel con Java y POI

package com.chuidiang.ejemplos.poi_excel;

import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Ejemplo sencillo de cómo crear una hoja Excel con POI
 * 
 * @author chuidiang
 * 
 */
public class EjemploCrearExcel {

    /**
     * Crea una hoja Excel y la guarda.
     * 
     * @param args
     */
    public static void main(String[] args) {
        // Se crea el libro
        HSSFWorkbook libro = new HSSFWorkbook();

        // Se crea una hoja dentro del libro
        HSSFSheet hoja = libro.createSheet();

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

        // Se crea una celda dentro de la fila
        HSSFCell celda = fila.createCell((short) 0);

        // Se crea el contenido de la celda y se mete en ella.
        HSSFRichTextString texto = new HSSFRichTextString("hola mundo");
        celda.setCellValue(texto);

        // Se salva el libro.
        try {
            FileOutputStream elFichero = new FileOutputStream("holamundo.xls");
            libro.write(elFichero);
            elFichero.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


Enlaces externos