zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HTTP请求报文
    NSInteger和int分别在什么时候使用
    iOS开发之一些字符串常用的代码
    NSTimer用法
    property 'count' not found on object of type 'NSMutableArray
    详解MAC硬盘中各个文件夹
    如何在Mac下显示Finder中的所有文件
    xcode运行时出现attaching to
    ios sandbox
    使用sqlite存取数据
  • 原文地址:https://www.cnblogs.com/rxbook/p/10273707.html
Copyright © 2011-2022 走看看