Excel en JAVA: Creación y lectura de archivos con Apache POI 4.4

Excel en java, Esta tuani.

Hola que tal, como están?, bienvenido a este pequeño y sencillo articulo acerca de como crear un archivo Excel en java y por supuesto como leer este archivo desde Java, para este tutorial utilizaremos las librerías de código abierto de de Apache POI. Realmente es algo sencillo de hacer y daremos inicios desde ya.

Bien el primer paso que debes de seguir es realizar la descarga de las librerías de Apache desde el sitio oficial, te dejo por acá el enlace para que las puedas descargar. Apache POI. En amarillo esta marcada la versión que estaremos utilizando.

Exel en Java. Libreria Apache POI
Exel en Java. Libreria Apache POI

En mi caso decidí descargarlo en .zip, que es el mas común si trabajas con Windows, si tu trabajas con otro sistema operativo y te es mas sencilla otras de las versiones, puedes utilizar la que tu desees.

Exel en Java. Libreria Apache POI
Descargar librería, en nuestro caso el link sugerido.

Aclaro que por cuestión de gustos y rapidez, yo estaré utilizando Netbeans como IDE así que las imágenes que proporcionaré serán de este, lo dejo a tu criterio el uso de este IDE o si Prefieres Eclipse o cualquier otro, eso ya es cuestión de gustos, para mi es mas cómodo Netbeans.

Pero bien, una vez descargada la librería, procedemos a descomprimir el contenido, en mi caso descomprimiré la librería en una carpeta en la unidad C:\ de mi computador. La ruta completa será C:\Developer\LibsJava\ dentro de esta pegaremos el .zip y damos extraer aquí.

A como logran apreciar, el contenido de la librería es bastante grande, nosotros no utilizaremos tantos archivos, a continuación les agregaré una imagen en la cual mostrare la lista de archivos jars que seleccionaremos para trabajar en nuestro pequeño laboratorio, no son necesarias todas las librerías.

Propiedades del proyecto en Netbeans

Y si mas preámbulo, colocaré el código por acá

EXCEL EN JAVA – CREAR UN ARCHIVO  (.XLSX)

El código que muestra a continuación esta 100% funcional, puedes utilizarlo sin problema, solo es necesario cambiar la ruta actual, o si prefieres crear la ruta del archivo donde se creará el Excel con intencional .xlsx. en mi caso la ruta que utilice fue: C:\Developer\Tutorial\Java\ hago un poco de énfasis en esto ya que, si la ruta no se encuentra el código enviara el error que la ruta no fue encontrada.

Te dejo por acá el preciso momento en el que realizamos en el video tutorial la codificación de la creación del archivo Excel.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

// Excel en Java, tutorial escritura
public class CreateExcelFile {

    public static void main(String[] args) {

        String fileName = "Productos.xlsx";
        String filePath = "C:\\Developer\\Tutorial\\Java\\" + fileName;
        //Seteando el nombre de la hoja donde agregaremos los items
        String hoja = "Hoja1"; 
        
        //Creando objeto libro de Excel
        XSSFWorkbook book = new XSSFWorkbook();
        XSSFSheet hoja1 = book.createSheet(hoja);
        
        //Cabecera de la hoja de excel
        String[] header = new String[]{"Código", "Producto", "Descripción"};

        //Contenido de la hoja de excel
        String[][] document = new String[][]{
            {"C001", "Computador Laptop HP.", "Compurtador marca HP color negro."},
            {"C002", "Computador Escritorio Lenovo.", "Compurtador marca lenovo color negro con monitor integrado."},
            {"C003", "Impresora HP.", "Impresora marca HP, multifuncional color negro."},
            {"C004", "Mouse Inalambrico Logitec.", "Mouse Inalambrico color azul con negro."},
            {"C005", "Teclado Inalambrico Lenovo.", "Teclado Inalambrico color blanco."}
        };

        //Aplicando estilo color negrita a los encabezados
        CellStyle style = book.createCellStyle();
        Font font = book.createFont();
        font.setBold(true);//Seteando fuente negrita al encabezado del archivo excel
        style.setFont(font);

        //Generando el contenido del archivo de Excel
        for (int i = 0; i <= document.length; i++) {
            XSSFRow row = hoja1.createRow(i);//se crea las filas
            for (int j = 0; j < header.length; j++) {
                if (i == 0) {//Recorriendo cabecera
                    XSSFCell cell = row.createCell(j);//Creando la celda de la cabecera en conjunto con la posición
                    cell.setCellStyle(style); //Añadiendo estilo a la celda creada anteriormente
                    cell.setCellValue(header[j]);//Añadiendo el contenido de nuestra lista de productos
                } else {//para el contenido
                    XSSFCell cell = row.createCell(j);//Creando celda para el contenido del producto
                    cell.setCellValue(document[i - 1][j]); //Añadiendo el contenido
                }
            }
        }

        File excelFile;
        excelFile = new File(filePath); // Referenciando a la ruta y el archivo Excel a crear
        try (FileOutputStream fileOuS = new FileOutputStream(excelFile)) {
            if (excelFile.exists()) { // Si el archivo existe lo eliminaremos
                excelFile.delete();
                System.out.println("Archivo eliminado.!");
            }
            book.write(fileOuS);
            fileOuS.flush();
            fileOuS.close();
            System.out.println("Archivo Creado.!");

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Imágenes del archivo Excel creado

EXCEL EN JAVA – LEER UN ARCHIVO  (.XLSX)

A continuación les proporciono el fragmento de código 100% funcional de la lectura del archivo Excel desde java. En esta ocasión leeremos el mismo archivo que creamos anteriormente., leyéndolo desde la misma ruta donde lo habíamos creado.

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

// Excel en Java, tutorial lectura
public class LeerArchivoExcel {

    public static void main(String[] args) {
        // Nombre del archivo a leer
        String fileName = "Productos.xlsx";
        String pathFile = "C:\\Developer\\Tutorial\\Java\\" + fileName;

        try (FileInputStream file = new FileInputStream(new File(pathFile))) {
            // Leer el archivo de Excel en la ruta especificada
            XSSFWorkbook book = new XSSFWorkbook(file);
            // Obtener medinte indice la hoja que se leera
            XSSFSheet sheet = book.getSheetAt(0);
            // Obteniendo todas las filas de la hoja leida
            Iterator<Row> rowIterator = sheet.iterator();

            // CRendo un StringBuilder donde almacenaremos los datos del 
            // Excel temporalmente para mostrarlo en consola
            StringBuilder sb = new StringBuilder();

            Row row;
            // Recorreremos cada fila de la hoja hasta llegar al final
            while (rowIterator.hasNext()) {
                row = rowIterator.next();
                // Obteniendo las celdas de cada fila para obtener valores
                Iterator<Cell> cellIterator = row.cellIterator();
                Cell cell;
                //Recorrienco las celdas de la fila obtenida
                while (cellIterator.hasNext()) {
                    // Obteniendo el valor de la celda para ser almacenada en nuestro buffer
                    cell = cellIterator.next();
                    // Agregando a nuestro buffer los valores leidos 
                    // de las celdas incluyendo la cabecera
                    // Haremos una pequeña validacion para saber si la columna que 
                    // estamos leyendo esta en la posicion cero, si es la primera no agregaremos formato
                    // de lo contrario rellenaremos con espacios la cadena pare verlo de forma ordenada.
                    if (cell.getColumnIndex() == 0) {
                        sb.append(cell.toString()).append("\t");
                    } else {
                        sb.append(String.format("%-30s", cell.toString())).append("\t");
                    }
                    
                }
                // Agregando salto de linea, por estetica
                sb.append("\n");
            }
            // Imprimiendo contenido del Excel agregado en el buffer
            System.out.println(sb.toString());
        } catch (Exception e) {
            e.getMessage();
        }
    }
}

Imagen del archivo Excel leído desde Java

Impresión en consola de los datos del Excel leido

Bien, espero que el tutorial haya sido de gran ayuda, y gracias por haber llegado hasta el final del tutorial, por acá te dejare en enlace para que puedas descargar el código fuente de Excel en Java, creación y lectura de un archivo .xlsx 100% funcional.

También te dejo algunos enlaces con otros tutoriales de programación en Swift. Y te invito a que te suscribas a nuestro canal de Youtube Esta Tuani, tabien te invito a ver el video tutorial completo de este blog por si se te hace mas comodo.

Gracias por tu atención en este tutorial Excel en Java, te esperamos nuevamente.

Capacidades y Habilidades necesarias para ser un desarrollador FULL STACK
Programacion Informática Tecnología

Capacidades y Habilidades necesarias para ser un desarrollador FULL STACK

Que habilidades o conocimientos se requieren para ser un desarrollador Full Stack, acá te informo lo tuani cuales son.
Read More
WebSphere Application Server en Windows Parte #1
Informática Desarrollo Programacion

WebSphere Application Server en Windows Parte #1

¿Que es WebSphere Application Server(WAS)? WebSphere Application Server conocido popularmente como WAS es un servidor de aplicaciones de la familia...
Read More
Procedimiento que regresa una tabla cruzada usando Db2
Informática Programacion

Procedimiento que regresa una tabla cruzada usando Db2

Concepto básico de tabla cruzada usando Db2 El concepto básico de una tabla cruzada es que los valores de fila...
Read More
Primeros pasos con Slim 4 en PHP
PHP Programacion

Primeros pasos con Slim 4 en PHP

Primeros pasos para utilizar Slim 4 en Php, Instalando Apache XAMPP, Composer y creando prin=mera App con Slim.
Read More
Slim para PHP – Micro Framework programación del 2020
PHP Programacion

Slim para PHP – Micro Framework programación del 2020

Hola que tal, como están? espero que muy bien. El día de hoy le vengo a hablar un poco de...
Read More
Conociendo  RPG IV  – AS400
Programacion

Conociendo RPG IV – AS400

Conociendo lenguaje de programación - RPG IV
Read More
Excel en JAVA: Creación y lectura de archivos con Apache POI 4.4
Programacion Java

Excel en JAVA: Creación y lectura de archivos con Apache POI 4.4

Hola que tal, como están?, bienvenido a este pequeño y sencillo articulo acerca de como crear un archivo Excel en...
Read More
Swift-IOS para principiantes, UITableView Parte #3
Programacion Centroamérica Swift

Swift-IOS para principiantes, UITableView Parte #3

Conceptos fundamentales de UITableView Las tablas son comúnmente utilizadas por aplicaciones cuyos datos están altamente estructurados u organizados jerárquicamente. Las...
Read More
Introducción a Swift IOS Parte #2
Informática Swift

Introducción a Swift IOS Parte #2

En este Post aprenderemos a crear nuestra primera app básica usando Swift IOS, la cual estará conformado por dos campos de textos donde se digitarán números que a través de botones se ejecutarán acciones básicas de una calculadora como sumar, restar, multiplicar y dividir.
Read More
Introducción a Swift-IOS Parte#1
Informática Programacion Swift

Introducción a Swift-IOS Parte#1

Swift es un lenguaje de programación creado por Apple, el cual esta enfocado para desarrollar aplicaciones que corran en iOS, Mac OS (OSX), TvOS y WatchOS presentado oficialmente en el año 2014 y diseñado para que se pudiera integrar con Cocoa y Cocoa Touch
Read More
{"posts_per_page":"10","cat":["151"],"design":"design-1","pagination":"false","gridcol":"2","showDate":"true","showCategory":"true","showContent":"true","words_limit":"20","showreadmore":"true","order":"DESC","orderby":"post_date","showAuthor":"true","media_size":"large","show_tags":"true","show_comments":"true"}