简体   繁体   English

Apache POI到Excel

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM