Apache poi优秀(Apache poi to excel)
我正在使用Apache poi将值导出到excel。在达到32767行后,值将停止打印。 我已经实现了在其他工作表中打印值的逻辑,它可以工作,但值重复....任何解决方案??????
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); } }I am using Apache poi to export the values to excel.after reaching 32767 rows the values are stop printing. I have implemented the logic for printing the valuesin other sheet,it works but values getting repeated.... Any solution??????
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);你将行索引转换为short。
请尝试使用此代码:
HSSFRow row = ss.createRow((int) ss.getLastRowNum() + 1);The problem is in your code:
HSSFRow row = ss.createRow((short) ss.getLastRowNum() + 1);you're casting the row index to short.
Try this code instead:
HSSFRow row = ss.createRow((int) ss.getLastRowNum() + 1);更多推荐
发布评论