Saltar al contenido

Uso de colores personalizados con SXSSF (Apache POI)

Recuerda que en la informática cualquier problema casi siempere suele tener diversas soluciones, pero nosotros aquí te enseñamos lo más óptimo y mejor.

Solución:

Entonces, después de buscar un poco en la web y leer los documentos, obtuve una pista de que SXSSF es en realidad un contenedor alrededor de XSSF, así que encasillé el CellStyle devuelto por el libro de trabajo de SXSSF a XSSF y pude usar XSSFColor directamente para generar colores.

SXSSFWorkbook workbook = new SXSSFWorkbook(50); 
Sheet sheet = workbook.createSheet("Image Data"); 
....
Cell cell = row.createCell(j);
cell.setCellValue(j);
XSSFCellStyle cs1 = (XSSFCellStyle) workbook.createCellStyle();
cs1.setFillForegroundColor(new XSSFColor(new java.awt.Color(red,green,blue)));          
cs1.setFillPattern(CellStyle.SOLID_FOREGROUND);
cell.setCellStyle(cs1);

Para evitar la necesidad de encasillar los cellStyles, cree primero un XSSFWorkbook con cellStyles (XSSFCellStyle) aplicando los colores personalizados y luego envuélvalo con un constructor SXSSFWorkbook como el siguiente ejemplo:

/**
 * Sample based on POI Spreadsheet How-To.
 * 
 * @see SXSSFWorkbook
 */
public static void main(String[] args) throws Throwable 

    XSSFWorkbook xssfWorkbook = new XSSFWorkbook();

    XSSFColor colorGrey = new XSSFColor(new Color(210, 210, 210));
    XSSFCellStyle cellStyleGrey = xssfWorkbook.createCellStyle();
    cellStyleGrey.setFillPattern(CellStyle.SOLID_FOREGROUND);
    cellStyleGrey.setFillForegroundColor(colorGrey);

    // keep 100 rows in memory, exceeding rows will be flushed to disk
    SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(xssfWorkbook, 100);
    Sheet sheet = sxssfWorkbook.createSheet();

    for (int rownum = 0; rownum < 1000; rownum++) 
        Row row = sheet.createRow(rownum);
        for (int cellnum = 0; cellnum < 10; cellnum++) 
            Cell cell = row.createCell(cellnum);
            String address = new CellReference(cell).formatAsString();
            cell.setCellValue(address);

            // for even rows apply the grey cellStyle
            if (rownum % 2 == 0) 
                cell.setCellStyle(cellStyleGrey);
            
        

    

    // Omitted asserts block from original sample...

    FileOutputStream out = new FileOutputStream("/temp/sxssf.xlsx");
    sxssfWorkbook.write(out);
    out.close();

    // dispose of temporary files backing this workbook on disk
    sxssfWorkbook.dispose();

Calificaciones y reseñas

Si conservas algún cuestión o forma de ascender nuestro crónica te recordamos dejar un exégesis y con gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *