2014-09-04 9 views
0

Я использую Apache poi для экспорта значений в excel.after достигает 32767 строк, значения - стоп-печать. Я реализовал логику для печати значений в другом листе, он работает, но значения повторяются .... Любое решение ??????Apache poi to excel

protected void populateRows(History history, String mmddyy, HSSFSheet ss) 
    { 
     log.debug("populateRows(History, String, HSSFSheet)"); 

     ArrayList<Unit> list = history.entryList; 

     Iterator it = list.iterator(); 

     while (it.hasNext()) 
     { 
      Unit u = (Unit) it.next(); 
      HSSFRow row = ss.createRow((short) ss.getLastRowNum() + 1); 

//   HSSFRow row = ss.createRow(ss.getLastRowNum() + 1);//added by magesh 

//   System.out.println("number of rows "+ ss.getLastRowNum()); 
      row = ExcelHelper.fillTheRowOnly(wb, row, numColumns); 
      SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 

      if (u.id != 0) 
      { 
       row.getCell((short) COLNUM_ID).setCellValue(u.id); 
      } 

      row.getCell((short) COLNUM_LENAME).setCellValue(history.lename); 
      row.getCell((short) COLNUM_CORPTAXCODE).setCellValue(history.corptaxcode); 

      row.getCell((short) COLNUM_ADJUSTED).setCellValue(u.adjusted); 
      row.getCell((short) COLNUM_ADJUSTED).setCellStyle(setPosFormat()); 

      row.getCell((short) COLNUM_CARRYFORWARD).setCellValue(u.carryForward); 
      row.getCell((short) COLNUM_CARRYFORWARD).setCellStyle(setPosFormat()); 

      row.getCell((short) COLNUM_CUM_CARRYFORWARD).setCellValue(u.cumulativeCarryForward); 
      row.getCell((short) COLNUM_CUM_CARRYFORWARD).setCellStyle(setPosFormat()); 

      row.getCell((short) COLNUM_EXPIRED_SYSTEM).setCellValue(u.expiredSystemGenerated); 
      row.getCell((short) COLNUM_EXPIRED_SYSTEM).setCellStyle(setPosFormat()); 

      row.getCell((short) COLNUM_GENERATED).setCellValue(u.generated); 
      row.getCell((short) COLNUM_GENERATED).setCellStyle(setPosFormat()); 

      row.getCell((short) COLNUM_UTILIZED_SYSTEM).setCellValue(u.utilizedSystemGenerated); 
      row.getCell((short) COLNUM_UTILIZED_SYSTEM).setCellStyle(setPosFormat()); 

      row.getCell((short) COLNUM_UTILIZED).setCellValue(u.utilized); 
      row.getCell((short) COLNUM_UTILIZED).setCellStyle(setPosFormat()); 

      row.getCell((short) COLNUM_JURISDICTION).setCellValue(history.jurisdictionName); 

      if (history.year != null) 
      { 
       row.getCell((short) COLNUM_NOLYEAR).setCellValue(formatter.format(history.year)); 
      } 

      row.getCell((short) COLNUM_NOTES).setCellValue(u.notes); 

      if (u.unitType.equals(StateTaxConstants.NOL_ADJUSTMENT)) 
      { 
       row.getCell((short) COLNUM_ADJUSTMENT_DESCR).setCellValue(u.adjusted_descr); 
      } 

      if(u.postDate != null) 
      { 
       row.getCell((short) COLNUM_POSTDATE).setCellValue(formatter.format(u.postDate)); 
      } 

      if (u.referenceDate != null) 
      { 
       row.getCell((short) COLNUM_REFDATE).setCellValue(formatter.format(u.referenceDate)); 
      } 

      row.getCell((short) COLNUM_USERNAME).setCellValue(u.userName); 
      row.getCell((short) COLNUM_FEIN).setCellValue(history.fein); 
      row.getCell((short) COLNUM_REVIEWED).setCellValue(u.reviewed); 
      row.getCell((short) COLNUM_PREPOST).setCellValue(u.prepost); 
      row.getCell((short) COLNUM_HISTNAME).setCellValue(u.histname); 
      row.getCell((short) COLNUM_YRENDORIG).setCellValue(u.yrendorig); 

     } 
    } 
protected void populateRows(History history, String mmddyy, HSSFSheet ss) 
    { 
     log.debug("populateRows(History, String, HSSFSheet)"); 

     ArrayList<Unit> list = history.entryList; 

     Iterator it = list.iterator(); 

     while (it.hasNext()) 
     { 
      Unit u = (Unit) it.next(); 
      HSSFRow row = ss.createRow((short) ss.getLastRowNum() + 1); 

//   HSSFRow row = ss.createRow(ss.getLastRowNum() + 1);   
//   System.out.println("number of rows "+ ss.getLastRowNum()); 
      row = ExcelHelper.fillTheRowOnly(wb, row, numColumns); 
      SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 

      if (u.id != 0) 
      { 
       row.getCell((short) COLNUM_ID).setCellValue(u.id); 
      } 

      row.getCell((short) COLNUM_LENAME).setCellValue(history.lename); 
      row.getCell((short) COLNUM_CORPTAXCODE).setCellValue(history.corptaxcode);   
     } 
    } 
+0

Я думаю, что 'HSSF' prfixed объект старый«XSL»стиль, который не может быть больше 32767 строк. Попробуйте префиксные объекты 'XSSF' для нового стиля xlsx – Jens

+0

Вот предел строки для [Excel] (http://superuser.com/a/366473/230998) –

ответ

6

Проблема заключается в коде:

HSSFRow row = ss.createRow((short) ss.getLastRowNum() + 1); 

вы заливкой индекс строки в короткий.

Попробуйте этот код вместо:

HSSFRow row = ss.createRow((int) ss.getLastRowNum() + 1); 
Смежные вопросы