1. 程式人生 > >php csv格式匯出大量資料

php csv格式匯出大量資料

在php中,經常使用excel表格下載資料,但是當下載的資料量比較大時,會比較慢,以下方法適用於匯出大批量的資料,但是當帶出的欄位較多是,也會影響下載的速度。

<?php

	header ( "Content-type:application/vnd.ms-excel" );  
	header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "gbk//IGNORE", "匯出csv" ) . ".csv" );  
			  
	// 開啟PHP檔案控制代碼,php://output 表示直接輸出到瀏覽器  
	$fp = fopen('php://output', 'a');   
	
  	$title = array('序號','工號');	
  		  
	// 將中文標題轉換編碼,否則亂碼  
	foreach ($title as $i => $v) {    
	   	$title[$i] = iconv('utf-8', 'gbk//IGNORE', $v);    
	}  
	// 將標題名稱通過fputcsv寫到檔案控制代碼    
	fputcsv($fp, $title);  

	$per = 5000;
	$i = 0;

	while (true) {
		
		$list = $model->getList($sql.'order by id asc limit '.$i*$per.','.$per,$params);

		if (empty($list)) {
			break;
		}

		foreach ($list as $key => $value) {
			
			$rows = array();
			 
			$rows[] = $value['id'];

			foreach ($rows as $k => $v) {
			
				$rows[$k] = iconv('utf-8', 'gbk//IGNORE', $v);
			}

			fputcsv($fp, $rows);
		}
		unset($list);  
		ob_flush();  
		flush();  
		
		$i++;
	}
			
	exit;