2010-10-25 12 views
22

Jestem początkującym użytkownikiem Apache POI Api. Próbuję utworzyć arkusz excel przy użyciu arraylist.Problem z dopasowaniem rozmiaru komórki Excel do rozmiaru zawartości podczas korzystania z Apache Poi

Mój kod Java jest następujący.

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 jest następujący:

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

Gdy arkusz Excel generowane kolumna nie pasuje do rozmiaru zawartości poprawnie. Przeszukałem Google w związku z tym problemem i odnalazłem

sheet.autoSizeColumn (5);

jest rozwiązaniem mojego problemu. Dodałem, jak w powyższym kodzie, ale nadal problem nadal występuje. Czy używam go poprawnie?

Czy istnieje inne rozwiązanie?

Proszę o pomoc

góry dziękuję

PS: Używam Apache POI 3.6

+3

ustawiasz rozmiar kolumny automatycznej przed zapisaniem danych. Dlatego nie wie, jak to zmienić. Dodaj to po pętli – Sean

+0

@Sean Bardzo przydatne wyjaśnienie dla początkującego, takiego jak ja. Dzięki!! – mvg

+0

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

Odpowiedz

51

Wystarczy przesunąć wywołanie

sheet.autoSizeColumn(5); 

do punktu w kodzie po dane zostały dodane, więc zaraz po pętli while powinno działać.

+1

Dzięki za odpowiedź. Twoja odpowiedź rozwiązuje problem. Właśnie przeniosłem wywołanie autosizecolumn po pętli while i działa teraz. Dzięki jeszcze raz. – mvg

Powiązane problemy