我无法使用autosizecolumn()。 实际上我没有得到写这个autosizecoloumn()方法的地方,虽然我在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.");
答案 0 :(得分:2)
在将数据写入工作表后调用autoSizeColumn();
非常重要。我会在FileOutputStream out = ...
电话之前加入。与以前的答案一样,自动大小将占用大量缓冲区空间,不应在大型工作表或SQL数据调用上使用。最好手动定义columnSize
。例如:
sheet.setColumnSize(0, 10*256);
第一个数字是列号,第一个列是零。列宽以字符宽度的1/256计算。
答案 1 :(得分:0)
如果你在最后编写autosizecoloumn()会更好,这样在那之后单元格不会更新。如果不清楚,只需在workbook.write
方法之前编写它。它应该是。
sheet.autoSizeColumn(colNum);