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