当前位置: 代码迷 >> Java Web开发 >> poi导出excel循环效率低上的有关问题
  详细解决方案

poi导出excel循环效率低上的有关问题

热度:929   发布时间:2013-02-25 21:13:26.0
poi导出excel循环效率低下的问题
Java code
//获取需要的用户信息  lu = comm.findalluser();  for (User u : lu) {//查出所有客户信息     la = salesaccountdao.listpallAccount(u.getUserid());     if (la.size() > 0) {        accountLists.addAll(la);     }  }//将查处的所有客户信息导出成excel[color=#FF0000](一下循环费时)[/color]  int i=0,j=0,size = accountLists.size();            for (i = 1; i < size; i++) {                // 获得这个sheet的第i行                row = sheet1.createRow(i);                for (j = 0; j < 12; j++) {                    // 设置每个sheet每一行的宽度,自动,根据需求自行确定                    sheet1.autoSizeColumn(j + 1, true);                    // 获得这一行的每j列                    cell = row.createCell(j);                    switch (j) {                    case 0:                        cell.setCellValue(accountLists.get(i).getName());                        break;                    case 1:                        cell.setCellValue(accountLists.get(i).getAddress());                        break;                    case 2:                        cell.setCellValue(accountLists.get(i).getCity());                        break;                    case 3:                        cell.setCellValue(accountLists.get(i).getCreatetime());                        break;                    case 4:                        cell.setCellValue(accountLists.get(i).getCustomertype());                        break;                    case 5:                        cell.setCellValue(accountLists.get(i).getDescription());                        break;                    case 6:                        cell.setCellValue(accountLists.get(i).getProvince());                        break;                    case 7:                        cell.setCellValue(accountLists.get(i).getStatecode());                        break;                    case 8:                        cell.setCellValue(accountLists.get(i).getFax());                        break;                    case 9:                        cell.setCellValue(accountLists.get(i).getIndustrycode());                        break;                    case 10:                        cell.setCellValue(accountLists.get(i).getRemarks());                        break;                    case 11:                        cell.setCellValue(accountLists.get(i).getWebsiteurl());                        break;                    case 12:                        cell.setCellValue(accountLists.get(i).getTelephone());                        break;                    case 13:                        cell.setCellValue(accountLists.get(i).getUserByOwnerid().getName());                        break;                    }                }            }[color=#FF0000]//就在生成excel的嵌套循环中,浪费了大量时间,总的600条数据,打印时间却是110秒钟,请高手指点一二,不胜感激!![/color]


------解决方案--------------------------------------------------------
Java code
int i=0,j=0,size = accountLists.size();        for (User user : accountLists) {                         // 获得这个sheet的第i行            row = sheet1.createRow(i);            for (j = 0; j < 12; j++) {                // 获得这一行的每j列                cell = row.createCell(j);                switch (j) {                case 0:                    cell.setCellValue(user.getName());                    break;                case 1:                    cell.setCellValue(user.getAddress());                    break;                case 2:                    cell.setCellValue(user.getCity());                    break;                case 3:                    cell.setCellValue(user.getCreatetime());                    break;                case 4:                    cell.setCellValue(user.getCustomertype());                    break;                case 5:                    cell.setCellValue(user.getDescription());                    break;                case 6:                    cell.setCellValue(user.getProvince());                    break;                case 7:                    cell.setCellValue(user.getStatecode());                    break;                case 8:                    cell.setCellValue(user.getFax());                    break;                case 9:                    cell.setCellValue(user.getIndustrycode());                    break;                case 10:                    cell.setCellValue(user.getRemarks());                    break;                case 11:                    cell.setCellValue(user.getWebsiteurl());                    break;                case 12:                    cell.setCellValue(user.getTelephone());                    break;                case 13:                    cell.setCellValue(user.getUserByOwnerid().getName());                    break;                }            }            i++;        }        for (j = 0; j < 12; j++) {            // 设置每个sheet每一行的宽度,自动,根据需求自行确定            sheet1.autoSizeColumn(j + 1, true);        }
  相关解决方案