zoukankan      html  css  js  c++  java
  • php 导出excel 10万数据

    php导出excel 10万数据(此代码主要测试用)

    在工作当中要对一些基本信息和其他信息导出

    起初信息比较小无所谓。。。。

    但当信息超出65535的时候

    发现点问题了 超出了 而且 反应速度很慢

    实现思路:

    分页导出
    

    伪代码:
    1、获取总数据,并确定显示多少条数据(我这里显示2万)
    2、循环页数
    2.1 从1开始,获取当前页面偏移量[(当前页-1)*显示的数据条数]
    2.2 根据偏移量显示2万条数据
    2.3 选择和创建excel页码
    2.4 设置excel基本数据
    2.5 循环导出数据并填充到excel中
    3、数据下载

    
         public function ceshi()
         {
            
           
    
            //总记录数
            $result=$this->db->count_all_results('nb_specialty');
    
            
            //每次导出20000条记录
            $limit=20000;
    
            //获取需要的总文件数
            $excel_count=ceil($result/$limit);
    
            $objPHPExcel = new PHPExcel();
    
            //循环导出
            //$i 文件一
            for($i=1;$i<=$excel_count;$i++)
            {
                //获取偏移数据
                $startSelect=($i-1)*$limit;
    
                if($i==1)
                {
                    $objPHPExcel->setActiveSheetIndex($i-1);
                }else{
                    $objPHPExcel->createSheet();
                    $objPHPExcel->setActiveSheetIndex($i-1);
                }
    
                $result_array=$this->db->limit($limit,$startSelect)->get('nb_specialty')->result_array();
    
                //echo $this->db->last_query();
    
                $objPHPExcel->getActiveSheet()->setTitle('培养方案 -- 项目');
    
                $objPHPExcel -> setActiveSheetIndex($i-1)
                -> setCellValue('A1', '测试');
    
                foreach($result_array as $key=>$val)
                {
                    $objPHPExcel->getActiveSheet()->setCellValue('A'.$key, $val['id']);
                    
                }
     
                
            }
    
            
    
            header('pragma:public');
    
            header('Content-type:application/vnd.ms-excel;charset=utf-8;name="测试.xls"');
    
            header("Content-Disposition:attachment;filename=测试.xls");//attachment新窗口打印inline本窗口打印
    
            $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
    
            $objWriter->save('php://output');
            
    
    
          
    
           
            
    
         }
    
    
    
  • 相关阅读:
    docker固定IP地址重启不变
    关于 CentOS 7 里面 普通用户 Ulimit max user processes 值的问题
    CentOS tengine mysql 5.7 php 5.6
    strace 分析 跟踪 进程错误
    WPF中的字体改善
    C#数据类型-string
    WPF中的文字修饰
    Winform与WPF对话框(MessageBox, Dialog)之比较
    WPF中将四个数字字符串值(比如:"10,10,300,300")转为Rect
    WPF中嵌入Flash(ActiveX)
  • 原文地址:https://www.cnblogs.com/mengluo/p/9646529.html
Copyright © 2011-2022 走看看