您的位置:首页 > 编程语言 > Java开发

Java 让excel导出大量数据进行分表打成压缩包进行下载

2016-06-06 09:30 519 查看
这段时间有涉及到 关于从前台自己导数据到服务器,然后再把数据导入数据库的操作,当时用了两天多时间才完成这个事情。最近有接到优化数据导出这个功能的一些任务,虽然做得还不是很完善,但也有自己的一些思想在里面。正好这是我第一次发技术博客,也就用这个来作为第一个案例好了。

public String consumeReport() throws IOException {

        int excelnum=0;

        List<File> srcfile=new ArrayList<File>();

        String templateName = "template.xlsx";// Excel模版

        URL url = this.getClass().getResource("/");// CarParkAction.class.getResource("/");

        String docsPath = url.getPath();     

        String templatePath = docsPath + templateName;

        OrderService orderService = ((OrderService) ContextHolder.getBean("orderServiceImpl"));

        List<OrderInfo> list = orderService.findOrderInfoList(orderInfo);

        if (list != null) {

            System.out.println("*******************有记录,开始导数据");

        while(list.size()>excelnum*100000){

            ExcelTemplate excel = ExcelTemplate.getInstance().readTemplatePath(

                    templatePath);

            String fileName = orderInfo.getParkId() +"_"+excelnum+ "_ConsumeInfo.xlsx";// 导出Excel文件名

            String filePath = docsPath + fileName;

            excel.creatNewRow();

            excel.createNewCol("停车场ID");

            excel.createNewCol("车牌号码");

            excel.createNewCol("消费类型");

            //excel.createNewCol("支付类型");

            excel.createNewCol("消费金额(元)");

            excel.createNewCol("开始时间");

            excel.createNewCol("结束时间");

            excel.createNewCol("消费时间");

            for (int i = excelnum*100000; i <=excelnum*100000 + 99999; i++) {

                if(list.size()<(i+1)){

                    break;

                }

                OrderInfo orderInfoResult=list.get(i);

                if(orderInfoResult==null){

                    break;

                }

                    

                excel.creatNewRow();

                excel.createNewCol(orderInfoResult.getParkId() + "");

                excel.createNewCol(orderInfoResult.getCarCode());

                

                if(orderInfoResult.getCostType()!=null){

                    int costType = orderInfoResult.getCostType();

                    switch (costType) {

                    case 1:

                        excel.createNewCol("包月");

                        break;

                    case 2:

                        excel.createNewCol("云缴费");

                        break;

                    case 3:

                        excel.createNewCol("现金");

                        break;

                    case 4:

                        excel.createNewCol("充值");

                        break;

                    default:

                        excel.createNewCol("其它类型");

                        break;

                    }

                }else{

                    excel.createNewCol("其它类型");

                }

                excel.createNewCol(DateUtils.ftoy(orderInfoResult.getOrderFee(), 100));

                excel.createNewCol(DateUtils.dateToString(orderInfoResult

                        .getStartTime()));

                excel.createNewCol(DateUtils.dateToString(orderInfoResult

                        .getEndTime()));

                excel.createNewCol(DateUtils.dateToString(orderInfoResult

                        .getCreateTime()));

            }

            excel.writeToFile(filePath);

            srcfile.add(new File(filePath));

            excelnum++;

        }

         String fileName = orderInfo.getParkId() +".zip";// 导出Excel文件名

         String filePath = docsPath + fileName;    

//         File zipfile = new File(filePath);  

         //压缩文件

         craeteZipPath(srcfile, filePath,docsPath);    

         //下载文件

         download(filePath, response);

        // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除

         File filedelect = new File(filePath);

         filedelect.delete();

        }else {

            System.out.println("*******************没有记录");

            ResponseUtil.responseJson(response, "300");

        }

        return null;

    }

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息