2012-07-26 158 views
1

下面的代码片断将结果集数据导出到excel文件,但它不会创建标题。 我已经使用使用Apache-POI创建的Excelsheet没有标题

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包含resulteset数据Collection<List> expReportDetailCol = new ArrayList<List>();

回答

4

你想++rowCounterrowCounter++rowCounter++表示给我当前值,然后递增。你rowCounter值为零时开始,所以你的第一组数据将其覆盖

要么当你用插头来实现,或者使用++ rowCounter代替

0

HSSFSheet片= workbook.createSheet(”增量rowCounter Zero_Report_N“); //生成用纸

ü可以通过将ArrayList中

HSSFCell cell = row.createCell(i);//u can pass values of headers 
    cell.setCellValue(value); 
    sheet.autoSizeColumn(i); 
添加页眉
相关问题