Jsf apache poi中的autosizeColumn()方法错误

Jsf apache poi中的autosizeColumn()方法错误,jsf,apache-poi,icefaces,Jsf,Apache Poi,Icefaces,我无法使用autosizecolumn()。 事实上,我不知道该在哪里编写这个autosizecolumn()方法,尽管我将所有数据打印在xls文件上,现在我唯一的要求是设置autosizecolumn。 我在左上角和右上角使用了addmergeredregion公司徽标和表数据 用于列标题 short mainrow=10; row=sheet.createRow(mainrow);

我无法使用autosizecolumn()。 事实上,我不知道该在哪里编写这个autosizecolumn()方法,尽管我将所有数据打印在xls文件上,现在我唯一的要求是设置autosizecolumn。

我在左上角和右上角使用了addmergeredregion公司徽标和表数据

用于列标题

                   short mainrow=10;


                        row=sheet.createRow(mainrow);
                        cell= row.createCell((short)0);
                        cell.setCellValue(new HSSFRichTextString("Sr.No."));
                        cell.setCellStyle(header);

                        sheet.autoSizeColumn((short)0);                 

                        cell= row.createCell((short)1);
                        cell.setCellValue(new HSSFRichTextString("Town_Code"));
                        cell.setCellStyle(header);

                        cell= row.createCell((short)2);
                        cell.setCellValue(new HSSFRichTextString("Town_Name"));
                        cell.setCellStyle(header);

                        cell= row.createCell((short)3);
                        cell.setCellValue(new HSSFRichTextString("State_Name"));
                        cell.setCellStyle(header);

                        cell= row.createCell((short)4);
                        cell.setCellValue(new HSSFRichTextString("Country_Name"));
                        cell.setCellStyle(header);
将数据填入XLS

                        short cellnum;
                        Integer srno=1;
                        for(Town town : townList){
                        row=sheet.createRow(++mainrow);
                        cellnum=0;
                        cell= row.createCell(cellnum++);
                        cell.setCellValue(srno++);
                        cell.setCellStyle(dataformat);

                        cell= row.createCell(cellnum++);
                        cell.setCellValue(new HSSFRichTextString(town.getTownCode()));
                        cell.setCellStyle(dataformat);
                        cell= row.createCell(cellnum++);
                        cell.setCellValue(new HSSFRichTextString(town.getName()));
                        cell.setCellStyle(dataformat);
                        cell= row.createCell(cellnum++);
                        cell.setCellValue(new HSSFRichTextString(town.getStateName()));
                        cell.setCellStyle(dataformat);
                        cell= row.createCell(cellnum++);
                        cell.setCellValue(new HSSFRichTextString(town.getCountryName()));
                        cell.setCellStyle(dataformat);

                        }

                        workbook.write(reportOutBuffer);
                        reportOutBuffer.close();
                        printNewReport(request, resp, reportOutBuffer.toByteArray(), "application/xls" ,"Town_Report_2013.");

最好在最末尾编写AutoSizeColumn(),这样单元格就不会在之后更新。如果不清楚,只需在
工作簿之前写。写
方法。应该是这样的

    sheet.autoSizeColumn(colNum);

调用
autoSizeColumn()很重要数据写入工作表后。我会在调用
FileOutputStream out=…
之前包含它。与前面的答案一样,自动大小将占用大量缓冲区空间,不应用于大型工作表或对数据的SQL调用。最好手动定义
columnSize
。例如:

sheet.setColumnSize(0, 10*256);
第一个数字是列号,第一列是零。列宽按字符宽度的1/256计算