Проблема при подборе размера ячейки Excel к размеру содержимого при использовании apache poi - PullRequest
23 голосов
/ 25 октября 2010

Я новичок в Apache POI API. Я пытаюсь создать лист Excel, используя arraylist.

Мой код Java выглядит следующим образом.

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 выглядит следующим образом:

List<Bean> beanList = new ArrayList<Bean>();
    beanList.add(new Bean("Amy","g@y.comrtyrtyrtyrtyrtyr"));
    beanList.add(new Bean("Joan","p@y.comrtyrtyrtyrtyrtyr"));
    beanList.add(new Bean("Megan","r@y.comrtyrtyrtyrtyrtyr"));
    beanList.add(new Bean("Joe","m@y.comrtyrtyrtyrtyrtyr"));
    beanList.add(new Bean("Febi","j@y.comrtyrtyrtyrtyrtyr"));

При создании листа Excel столбец не соответствует размеру содержимого правильно. Я искал в Google эту проблему и нашел

sheet.autoSizeColumn (5);

это решение моей проблемы. Я добавил как в коде выше, но проблема все еще сохраняется. Я правильно его использую?

Есть ли другое решение?

Пожалуйста, помогите

Заранее спасибо

P.s: Я использую Apache Poi 3.6

1 Ответ

52 голосов
/ 25 октября 2010

Вам просто нужно переместить вызов на

sheet.autoSizeColumn(5);

в точку в вашем коде после данных, которые были добавлены, поэтому сразу после того, как ваш цикл while должен работать.

...