PHP + Ajax处理大数据查询并导出Excel

思路:使用ajax多次请求服务器,分段生成多个Excel,然后打包压缩成zip,超链接指向下载的文件然后下载。

【HTML部分】

<input type="button" value="确定导出" onclick="export()">
<a style="display: none" id="export_success" href="/uploads/excel.zip">导出成功,点击下载Excel</a>

 

【JS部分】

function export(){
        if(!confirm('导出时间较长,请耐心等待,导出成功前请勿刷新页面!是否继续?')){
            return false;
        }
       
        ajaxGetExportData(1);

        var res = 0;
        $.ajax({
            type: "GET",
            async: false,
            url: "/download_zip.php",
            success:function(data){
                res = data;
            }
        });

        if(res == 0){
            alert('导出失败');
        }else{
            $("#export_success").show();
        }

    }
    function ajaxGetExportData(page){
        var res = 0;
        $.ajax({
            type: "GET",
            async: false,
            url: "/export.php?page="+page,
            success:function(data){
                res = data;
            }
        });

        if(res == 1){
            page++;
            ajaxGetExportData(page);
        }
        return true;
    }

 

 

【PHP部分】

export.php

$page     = $_GET['page'];

if($page <= 3){
    $file_path = 'uploads/excel';
    if (!file_exists($file_path)) {
        @mkdir($file_path,0777,true);
    }
    $file_name = $file_path . '/' . $page . '.txt';
    file_put_contents($file_name,'123');

    echo 1;
}else{
    echo 0;
}

 download_zip.php

$file_path = BASEPATH . '../uploads/excel';
        $zip_name = BASEPATH . '../uploads/excel.zip';
        @unlink($zip_name);

        // 加载zip类
        $this->load->library('MakeZip');
        $res = new MakeZip($file_path,$zip_name);
        if($res){
            echo 1;
        }else{
            echo 0;
        }

        exit;

 

最后一步:生成zip文件,参考:https://www.cnblogs.com/kccdzz/p/10273674.html

 

posted @ 2019-01-15 19:02  浮尘微光  阅读(1924)  评论(0编辑  收藏  举报