php不用第三方类导出excel

经常要用到导出数据到Excel文件,像我之前就会用一些开源的类库,比如PHPExcel之类,但对大量数据的支持很不好,很容易到达PHP内存使用上限。这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。

function putCsv($stmt=array(), $head=array()){
	// 输出Excel文件头,可把user.csv换成你要的文件名 
	header('Content-Type: application/vnd.ms-excel'); 
	header('Content-Disposition: attachment;filename="user.csv"'); 
	header('Cache-Control: max-age=0'); 
	// 打开PHP文件句柄,php://output 表示直接输出到浏览器 
	$fp = fopen('php://output', 'a'); 


	// 输出Excel列名信息 
	foreach ($head as $i => $v) { 
		// CSV的Excel支持GBK编码,一定要转换,否则乱码 
		$head[$i] = iconv('utf-8', 'gbk', $v); 
	} 
	// 将数据通过fputcsv写到文件句柄 
	fputcsv($fp, $head);
	 
	// 计数器 
	$cnt = 0; 
	// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小 
	$limit = 100000; 
	// 逐行取出数据,不浪费内存 
	foreach($stmt as $row) { 
		$cnt ++; 
		if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题 
			ob_flush(); 
			flush(); 
			$cnt = 0; 
		} 
		foreach ($row as $i => $v) { 
			$row[$i] = iconv('utf-8', 'gbk', $v); 
		} 
		fputcsv($fp, $row); 
	}
}

$stmt = array(
	array('林林林', '男', '22', '1234165@qq.com', '15114758963', '133'),
	array('林林', '男', '22', '1234165@qq.com', '15114758963', '133'),
	array('林林', '男', '22', '1234165@qq.com', '15114758963', '133'),
	array('林林', '男', '22', '1234165@qq.com', '15114758963', '133')
);
$head = array('姓名', '性别', '年龄', 'Email', '电话', '……'); 
putCsv($stmt, $head);

简单易用,非常节省内存,不依赖第三方类库。

借鉴地址:www.nowamagic.net/librarys/veda/detail/1206

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值