php 导出excel 10万数据

Posted 忧郁的小学生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘);
        


      

       
        

     }









以上是关于php 导出excel 10万数据的主要内容,如果未能解决你的问题,请参考以下文章

Php导出百万数据的优化

java导出大批量(百万以上)数据的excel文件

如何高效的导出 百万级别的数据量 到 Excel?

PHP导出大量数据到csv表

急求php导出生成excel的代码

前端万级数据量表格预览及前端导出Excel方案组件封装(基于vxetable虚拟滚动和web worker)