我正在使用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);
}
}
最佳答案
问题出在您的代码中:
HSSFRow row = ss.createRow((short) ss.getLastRowNum() + 1);
您正在将行索引转换为short。
请尝试以下代码:
HSSFRow row = ss.createRow((int) ss.getLastRowNum() + 1);