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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值