2010-10-25 23 views
22

Je suis débutant à Apache POI api. J'essaie de créer une feuille excel en utilisant arraylist.Problème dans l'ajustement de la taille de la cellule Excel à la taille du contenu lors de l'utilisation d'apache poi

Mon code java est le suivant.

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++; 
    } 

Le arraylist se présente comme suit:

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]rtyrtyrtyr")); 
    beanList.add(new Bean("Febi","[email protected]")); 

Lorsque la feuille Excel est générée, la colonne ne correspond pas à la taille du contenu correctement. J'ai cherché Google lié à ce problème et trouvé

sheet.autoSizeColumn (5);

est la solution à mon problème. J'ai ajouté comme dans le code ci-dessus, mais le problème persiste. Est-ce que je l'utilise correctement?

Y a-t-il une autre solution?

S'il vous plaît aider

Merci à l'avance

Ps: J'utilise Apache Poi 3.6

+3

Vous définissez la taille de la colonne automatique avant l'écriture des données. Par conséquent, il ne sait pas comment le dimensionner. Ajoutez-le après votre boucle – Sean

+0

@Sean Explication très utile pour un débutant comme moi. Merci!! – mvg

+0

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

Répondre

51

Vous avez juste besoin de passer l'appel à

sheet.autoSizeColumn(5); 

à un point dans votre code après les données ont été ajoutées, donc juste après votre boucle while devrait fonctionner.

+1

Merci pour la réponse. Votre réponse me résout le problème. Je viens de déplacer l'appel autosizecolumn après la boucle while et ça marche maintenant. Merci encore. – mvg