[英]Apache poi to excel
I am using Apache poi to export the values to excel.after reaching 32767 rows the values are stop printing. 我正在使用Apache poi将值导出到excel。达到32767行后,这些值将停止打印。 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);
}
}
The problem is in your code: 问题出在您的代码中:
HSSFRow row = ss.createRow((short) ss.getLastRowNum() + 1);
you're casting the row index to short. 您正在将行索引转换为short。
Try this code instead: 请尝试以下代码:
HSSFRow row = ss.createRow((int) ss.getLastRowNum() + 1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.