2010-10-25 20 views
22

Sono principiante per Apache POI api. Sto cercando di creare un foglio excel usando l'arraylist.Problema nell'adattare la dimensione della cella excel alla dimensione del contenuto quando si utilizza apache poi

Il mio codice java è il seguente.

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

L'arraylist è il seguente:

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]")); 

Quando viene generato il foglio Excel, la colonna non fornisca alla dimensione del contenuto correttamente. Ho cercato su Google in relazione a questo problema e ho trovato

sheet.autoSizeColumn (5);

è la soluzione al mio problema. Ho aggiunto come nel codice sopra, ma il problema persiste. Sto usando correttamente?

C'è qualche altra soluzione?

Si prega di aiutare

Grazie in anticipo

Ps: sto usando Apache probabilità di intercettazione 3.6

+3

si sta impostando la dimensione della colonna automatica prima della scrittura dei dati. Pertanto non sa come dimensionarlo. Aggiungilo dopo il ciclo – Sean

+0

@Sean Una spiegazione molto utile per un principiante come me. Grazie!! – mvg

+0

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

risposta

51

Hai solo bisogno di spostare la chiamata alla

sheet.autoSizeColumn(5); 

a un punto nel codice dopo i dati sono stati aggiunti, quindi subito dopo il tuo ciclo dovrebbe funzionare.

+1

Grazie per la risposta. La tua risposta mi risolve il problema. Ho appena spostato la chiamata autosizecolumn dopo il ciclo while e ora funziona. Grazie ancora. – mvg

Problemi correlati