web-dev-qa-db-fra.com

Problème d'adaptation de la taille de la cellule Excel à la taille du contenu lors de l'utilisation d'Apache poi

Je suis débutant à Apache POI api. J'essaie de créer une feuille Excel en utilisant arraylist.

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

L'arrayliste est le suivant:

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

Lorsque la feuille Excel est générée, la colonne ne s'adapte pas correctement à la taille du contenu. J'ai recherché Google sur 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. L'utilise-je correctement?

N 'y a-t-il pas une autre solution?

Veuillez aider

Merci d'avance

P.s: J'utilise Apache Poi 3.6

25
mvg

Il vous suffit de déplacer l'appel vers

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.

54
Bill the Lizard