2013-05-01 4 views
0

Я не могу использовать autosizecolumn(). На самом деле мне не нравится писать этот метод autosizecoloumn(), хотя я получил все данные, напечатанные в файле xls, и теперь мое единственное требование - установить autosizecolumn.autosizeColumn() метод ошибка в apache-poi

Я использовал 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."); 

ответ

2

Важно, чтобы вызвать autoSizeColumn(); после того, как данные были записаны на листе. Я бы включил его прямо перед вызовом FileOutputStream out = .... Как и в предыдущих ответах, размер авто будет занимать много места в буфере и не должен использоваться на больших листах или SQL-вызовах данных. Лучше определить columnSize вручную. Например:

sheet.setColumnSize(0, 10*256); 

Первое число - это номер столбца, первый столбец - нуль. Ширина столбца вычисляется в 1/256ths ширины символа.

0

Было бы лучше, если вы пишете autosizecoloumn() в самом конце, так что клетка не получит обновляется после этого. Если не ясно, просто напишите его до workbook.write. Это должно быть.

sheet.autoSizeColumn(colNum); 
Смежные вопросы