阿帕奇poi卓越

我正在使用Apache poi将值导出到excel.after达到32767行的值停止打印。 我已经实现了打印其他表中的值的逻辑,它的工作原理,但价值重复….任何解决scheme??????

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); } } 

问题出在你的代码中:

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

你正在投射行索引。

试试这个代码:

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