使用Apache-POI创build的Excelsheet没有标题
下面的片段将结果集数据导出到excel文件,但是它不会创build标题。 我用过
HSSFRow rowhead = sheet.createRow((short) 0);
创build标题,但创build的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包含resulteset数据Collection<List> expReportDetailCol = new ArrayList<List>();
你想++rowCounter
不是rowCounter++
。 rowCounter++
表示给我当前的值,然后递增。 你的rowCounter值是零开始,所以你的第一组数据覆盖它
在完成标题时增加rowCounter,或者使用++ rowCounter
HSSFSheet sheet = workbook.createSheet(“Zero_Report_N”); //创build表单后
你可以通过放入数组列表添加标题
HSSFCell cell = row.createCell(i);//u can pass values of headers cell.setCellValue(value); sheet.autoSizeColumn(i);