Java – Crear archivo Excel

Para crear un archivo de excel en Java usaremos las bibliotecas POI de Apache, por lo que agregaremos la dependencia de Maven a nuestro proyecto.

-Cómo leer un archivo de texto
-Cómo crear un archivo XML

-Cómo crear un archivo ZIP
-Como crear un PDF

La dependencia que que debes agregar en tu archivo POM es la siguiente:

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.16</version>
</dependency>

El código es el siguiente:

package com.decodigo.ejemplos;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

/**
 *
 * @author decodigo
 */
public class CrearExcel {

    public static void main(String args[]) {
        //Crear libro de trabajo en blanco
        Workbook workbook = new HSSFWorkbook();

        //Crea hoja nueva
        Sheet sheet = workbook.createSheet("Hoja de datos");

        //Por cada línea se crea un arreglo de objetos (Object[])
        Map<String, Object[]> datos = new TreeMap<String, Object[]>();
        datos.put("1", new Object[]{"Identificador", "Nombre", "Apellidos"});
        datos.put("2", new Object[]{1, "María", "Remen"});
        datos.put("3", new Object[]{2, "David", "Allos"});
        datos.put("4", new Object[]{3, "Carlos", "Caritas"});
        datos.put("5", new Object[]{4, "Luisa", "Vitz"});

        //Iterar sobre datos para escribir en la hoja
        Set<String> keyset = datos.keySet();
        int numeroRenglon = 0;
        for (String key : keyset) {
            Row row = sheet.createRow(numeroRenglon++);
            Object[] arregloObjetos = datos.get(key);
            int numeroCelda = 0;
            for (Object obj : arregloObjetos) {
                Cell cell = row.createCell(numeroCelda++);
                if (obj instanceof String) {
                    cell.setCellValue((String) obj);
                } else if (obj instanceof Integer) {
                    cell.setCellValue((Integer) obj);
                }
            }
        }
        try {
            //Se genera el documento
            FileOutputStream out = new FileOutputStream(new File("/ruta/ejemplo.xls"));
            workbook.write(out);
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Como puedes ver primero creamos el contenedor de toda la información de nuestro documento.

//Crear libro de trabajo en blanco
Workbook workbook = new HSSFWorkbook();

Si recuerdas, un documento de excel puede tener varias hojas de trabajo. En la siguiente línea creamos al menos una a partir del objeto workbook creado anteriormente y le asignamos el nombre «Hoja de datos«.

//Crea hoja nueva
Sheet sheet = workbook.createSheet("Hoja de datos");

Lo siguiente es crear la información que estará contenida en la hoja de datos.

//Por cada línea se crea un arreglo de objetos (Object[])
Map<String, Object[]> datos = new TreeMap<String, Object[]>();
datos.put("1", new Object[]{"Identificador", "Nombre", "Apellidos"});
datos.put("2", new Object[]{1, "María", "Remen"});
datos.put("3", new Object[]{2, "David", "Allos"});
datos.put("4", new Object[]{3, "Carlos", "Caritas"});
datos.put("5", new Object[]{4, "Luisa", "Vitz"});

Toda la información estará contenida en un objeto llamado datos, que es un mapa de arreglos de objetos sobre el cual iteraremos en el siguiente bloque de código.

//Iterar sobre datos para escribir en la hoja
Set<String> keyset = datos.keySet();
int numeroRenglon = 0;
for (String key : keyset) {
    Row row = sheet.createRow(numeroRenglon++);
    Object[] arregloObjetos = datos.get(key);
    int numeroCelda = 0;
    for (Object obj : arregloObjetos) {
        Cell cell = row.createCell(numeroCelda++);
        if (obj instanceof String) {
            cell.setCellValue((String) obj);
        } else if (obj instanceof Integer) {
            cell.setCellValue((Integer) obj);
        }
    }
}

Del bloque anterior podrás notar que iteramos sobre un conjunto de llaves creado a partir de nuestro arreglo inicial, en esta iteración también creamos los reglones de nuestra hoja de datos con el método createRow y de forma anidada vamos creando cada una de las celdas que corresponden a cada columna por medio del método createCell.

Los datos con los que creamos nuestra hoja de cálculo pueden provenir de otra fuente de datos como una base de datos, algún archivo de texto o cualquier arreglo de datos.

Finalmente creamos el documento en excel.

try {
    //Se genera el documento
    FileOutputStream out = new FileOutputStream(new File("/ruta/ejemplo.xls"));
    workbook.write(out);
    out.close();
} catch (Exception e) {
    e.printStackTrace();
}

El resultado será una hoja de cálculo como la siguiente:

crear un archivo de excel en Java

Y eso es todo. Esperamos que este ejemplo de crear un archivo de excel en Java te sea de utilidad.

Más información en inglés: https://geekole.com/create-excel-file-with-apache-in-java/

5 comentarios en «Java – Crear archivo Excel»

  1. Estimados, gracias por su maravillosa acotación.
    Ahora bien, necesito vuestra ayuda respecto a la ruta donde sera guardado el archivo excel. Como podría hacer para que el usuario escoja la ruta donde desea se guarde el archivo excel generado?

    Responder

Deja un comentario

twenty one − 14 =