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万数据
原文地址:https://www.cnblogs.com/mengluo/p/9646529.html