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');
        


      

       
        

     }



免責聲明!

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



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