2010-10-25 20 views
22

Soy un principiante de la API Apache POI. Estoy tratando de crear una hoja de Excel usando una lista de arrays.Problema al ajustar el tamaño de la celda excel al tamaño del contenido al usar apache poi

Mi código de Java es el siguiente.

HSSFWorkbook wb = new HSSFWorkbook(); 
    HSSFSheet sheet = wb.createSheet("new sheet"); 
    HSSFCellStyle style = wb.createCellStyle(); 
     style.setFillForegroundColor(HSSFColor.LIME.index); 
     style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 

    HSSFRow row4 = sheet.createRow(4); 
    row4.createCell(4).setCellValue("name"); 
    row4.createCell(5).setCellValue("emailId"); 
    sheet.autoSizeColumn(5); 
    List<Bean> nameList = this.getArrayList(); 

    Iterator<Bean> nameListIterator = nameList.iterator(); 


    sheet.autoSizeColumn(5); 

    int i=5; 
    HSSFRow row = null; 


    while(nameListIterator.hasNext()) 
    { 
     Bean bean = nameListIterator.next(); 

     row = sheet.createRow(i); 
     row.createCell(4).setCellValue(bean.getName()); 


     row.createCell(5).setCellValue(bean.getMailId()); 
     i++; 
    } 

ArrayList es como sigue:

List<Bean> beanList = new ArrayList<Bean>(); 
    beanList.add(new Bean("Amy","[email protected]")); 
    beanList.add(new Bean("Joan","[email protected]")); 
    beanList.add(new Bean("Megan","[email protected]")); 
    beanList.add(new Bean("Joe","[email protected]")); 
    beanList.add(new Bean("Febi","[email protected]")); 

Cuando se genera la hoja de Excel, la columna no se ajusta al tamaño del contenido correctamente. Busqué en Google relacionado con este problema y encontré

sheet.autoSizeColumn (5);

es la solución a mi problema. Añadí como en el código anterior, pero el problema persiste. ¿Lo estoy usando correctamente?

¿Hay alguna otra solución?

Por favor, ayuda

Gracias de antemano

PD: estoy usando Apache Poi 3,6

+3

está configurando el tamaño de columna automático antes de que se escriban los datos. Por lo tanto, no sabe cómo dimensionarlo. Agréguelo después de su ciclo – Sean

+0

@Sean Explicación muy útil para un principiante como yo. ¡¡Gracias!! – mvg

+0

http://stackoverflow.com/questions/20190317/apache-poi-excel-big-auto-column-width – gavenkoa

Respuesta

51

Sólo tiene que mover la llamada a

sheet.autoSizeColumn(5); 

a un punto en el código después de los datos han sido agregados, por lo que justo después de su ciclo while debería funcionar.

+1

Gracias por la respuesta. Tu respuesta me resuelve el problema. Acabo de mover la llamada autosizecolumn después del ciclo while y funciona ahora. Gracias de nuevo. – mvg

Cuestiones relacionadas