En nuestro artículo anterior, revisamos los detalles de Apache POI, una API Java de código abierto para trabajar con formatos de archivo de Microsoft. En este artículo, revisaremos el componente Apache POI para trabajar con Excel Workbooks. También mostraremos cómo usar Apache POI para crear un archivo de Excel y agregarle hojas usando esta biblioteca Java.

Apache Poi Java API para acceder a formatos de archivo de Excel

Apache POI Java API proporciona componentes separados para trabajar con dos formatos de archivo de Excel diferentes. Estos son:

  1. HSSF (formato de hoja de cálculo horrible)-para trabajar con Excel 97-2003 Formatos de archivo
  2. XSSF (formato de hoja de cálculo XML) - para trabajar con Excel 2007 y formatos de archivo posteriores Específicamente, HSSF le permite leer archivos XLS, mientras que XSSF le permite leer xls y xlsx archivos. Ambas API le permiten crear, leer y manipular archivos de Excel desde su aplicación Java sin entrar en los detalles de los formatos de archivo subyacentes.

¿Cómo crear el archivo Excel XLSX en Java?

En este ejemplo, pasaremos por los detalles del uso de Apache POI XSSF para crear archivos XLSX en nuestra aplicación Java. En esta etapa, suponemos que ya ha instalado y configurado la API de Apache POI en su aplicación Java. Si no lo ha hecho, puede visitar el Instalar Apache POI para Java y seguir los pasos.

Pasos para crear Excel Workbook usando Apache POI

Crear un libro de trabajo de Excel usando la API POI Apache para Java es simple y fácil, y se puede lograr utilizando los siguientes pasos.

  1. Cree un libro de trabajo usando XSSFWorkBook Clase
  2. Cierre la secuencia de salida. El código Java para crear Excel Workbook usando Apache POI es el siguiente.
XSSFWorkbook wb = new XSSFWorkbook();
...
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

El código anterior creará un libro de trabajo de Excel en formato de archivo XLSX. Sin embargo, si abre el libro de trabajo en esta etapa, recibirá el siguiente error.

La razón de esto es que un libro de trabajo de Excel que usa Apache POI sin ninguna hoja de trabajo da este error. Para resolver este problema, necesitamos agregar al menos una hoja de trabajo al archivo de Excel generado.

Agregar hoja de trabajo al libro de trabajo de Excel con Apache POI en Java

Esto nos lleva al paso en el que necesitamos agregar una hoja de trabajo al libro de trabajo para que funcione correctamente. Esto se puede lograr utilizando el objeto XSSFSFEET que se agrega al libro de trabajo como se muestra en la siguiente muestra de código.

XSSFWorkbook wb1 = new XSSFWorkbook();
try
{
	XSSFSheet sheet1 = wb1.createSheet("Ripon");
	FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
	wb1.write(fileOut);    
	fileOut.close();
}
catch(Exception ex)
{
	System.out.println("XLSX Generated Error...");
}

Complete XSSFWorkBook Ejemplo

Ahora que hemos visto cómo crear un libro de trabajo y agregarle una hoja con la API de Apache POI para Java, echemos un vistazo a cómo agregaremos filas y celdas a la hoja de trabajo creada. La clase XSSFSHEET tiene el método Createrow que le permite agregar una fila a la hoja. Esto devuelve un objeto de la clase de fila que representa una fila en la hoja de trabajo de Excel. Para crear celdas en la hoja de trabajo, tenemos que usar el método CreateCell que devuelve un objeto de la clase XSSFCell. El método SetCellValue de XSSFCell se usa para establecer el valor de la celda. Un ejemplo completo de la creación de un libro de trabajo utilizando XSSFWorkBook, agregar una hoja usando XSSFSheet y agregar XSSFROW se muestra a continuación.

// Blank workbook
        XSSFWorkbook workbook = new XSSFWorkbook();
        // Creating a blank Excel sheet
        XSSFSheet sheet = workbook.createSheet("student Details");
        // Creating an empty TreeMap of string and Object][] type
        Map<String, Object[]> data = new TreeMap<String, Object[]>();
        // Writing data to Object[]
        // using put() method
        data.put("1", new Object[] { "ID", "CITY", "STATE" });
        data.put("2", new Object[] { 1, "Clanton", "Alabama" });
        data.put("3", new Object[] { 2, "Cordova", "Alaska" });
        data.put("4", new Object[] { 3, "Clifton", "Arizona" });
        data.put("5", new Object[] { 4, "Arcadia", "California" });
  
	// Iterating over data and writing it to sheet
	Set<String> keyset = data.keySet(); 
        int rownum = 0;
        for (String key : keyset) { 
            // Creating a new row in the sheet
            XSSFRow row = sheet.createRow(rownum++); 
            Object[] objArr = data.get(key); 
            int cellnum = 0; 
            for (Object obj : objArr) { 
                // This line creates a cell in the next column of that row
                XSSFCell cell = row.createCell(cellnum++); 
                if (obj instanceof String)
                    cell.setCellValue((String)obj); 
                else if (obj instanceof Integer)
                    cell.setCellValue((Integer)obj);
            }
        }     
        // Writing the workbook
        FileOutputStream out = new FileOutputStream("gfgcontribute.xlsx");
        workbook.write(out); 
        // Closing file output connections
        out.close();

Conclusión

En este artículo de blog, demostramos cómo crear un libro de trabajo de Excel utilizando la API de Apache POI para Java. Utilizamos el XSSFWorkbook para generar un libro de trabajo XLSX, agregamos hojas de trabajo, agregamos filas a la hoja de trabajo y se pobló datos en las celdas en la hoja de trabajo. Para obtener más ejemplos de trabajar con libros de trabajo de Excel utilizando Apache POI para Java, estad atentos.