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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM