在snippet下面将结果集数据导出到excel文件,但它不会创建标题。 我用过
HSSFRow rowhead = sheet.createRow((short) 0);
创建标题,但创建的Excel工作表仅包含没有标题的数据。可能是什么问题?。请指导。
public boolean prepareExcelFilefromQuery(Collection<List> queryDataRowWise,HttpServletResponse response)
HSSFRow row = null;
HSSFCell cell=null;
Integer rowCounter=0;
Integer colCounter;
boolean success=false;
try {
Iterator<List> rowIterator = queryDataRowWise.iterator();
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Zero_Report_N");
HSSFRow rowhead = sheet.createRow((short) 0);
rowhead.createCell((short) 0).setCellValue("APPLN_RECD_DT");
rowhead.createCell((short) 1).setCellValue("POLICY_NO");
rowhead.createCell((short) 2).setCellValue("APPLN_NO");
rowhead.createCell((short) 3).setCellValue("OR_NUMBER");
while(rowIterator.hasNext())
{
colCounter=0;
queryDataColWise=(List)rowIterator.next();
Iterator colIterator = queryDataColWise.iterator();
row = sheet.createRow(rowCounter++);
while(colIterator.hasNext())
{
cell = row.createCell(colCounter++);
Object o = colIterator.next();
if(o instanceof java.lang.String )
{
String s=(String)o;
cell.setCellValue(s);
}
else if(o instanceof java.lang.Double )
{
Double d=(Double)o;
cell.setCellValue(d);
}
else if(o instanceof java.lang.Integer )
{
Integer i=(Integer)o;
cell.setCellValue(i);
}
else if(o instanceof java.util.Date )
{
Date date=(Date)o;
SimpleDateFormat FORMATTER;
FORMATTER = new SimpleDateFormat("MM/dd/yyyy");
String date11 = FORMATTER.format(date);
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
cell.setCellStyle(cellStyle);
cell.setCellValue(FORMATTER.parse(date11));
}
}
}
workbook.write(response.getOutputStream());
success=true;
catch (Exception e) {
logger.debug("Exception caught in prepareExcelFilefromQuery class ", e);
}
return success;
}
其中expReportDetailCol包含结果集数据Collection<List> expReportDetailCol = new ArrayList<List>();
答案 0 :(得分:4)
您希望++rowCounter
不是rowCounter++
。 rowCounter++
表示给我当前值,然后递增。你的rowCounter值为零,因此你的第一组数据会覆盖它
在完成标题后增加rowCounter,或者使用++ rowCounter代替
答案 1 :(得分:0)
HSSFSheet sheet = workbook.createSheet(“Zero_Report_N”); //创建工作表后
你可以通过加入arraylist
来添加标题 HSSFCell cell = row.createCell(i);//u can pass values of headers
cell.setCellValue(value);
sheet.autoSizeColumn(i);