php导出大数据csv

<?php
/**
 * @author    漫步云端
 */
header("content-Type:text/html; charset=UTF-8");


class PHPCsv
{
public $Title="Simple";
public $SheetHeader=[];
public $SheetBody=[];
public $fp;

public function __construct()
{

}
public function setTile($title)
{
$this->$Title=$title;
}

public function init()
{
header("content-Type:text/html; charset=UTF-8");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$this->Title.'.csv"');
header('Cache-Control: max-age=0');
$this->fp = fopen('php://output',  'w');
fwrite($this->fp,chr(0xEF).chr(0xBB).chr(0xBF));  
foreach($this->SheetHeader as $key => $item) {
$this->SheetHeader[$key] = $item;
   // $this->SheetHeader[$key] = iconv('UTF-8', 'GBK', $item);
}
fputcsv($this->fp, $this->SheetHeader);

}

public function addSheetBody($datas){
foreach($datas as $key => $data){

foreach($this->SheetHeader as $k => $cell){
$row[$k] = $data[$k];
//$row[$k] = iconv('UTF-8','GBK',$data[$k]);
}
fputcsv($this->fp, $row);
}

}

}

// 使用示例


$csv=new PHPCsv();


 $csv->Title='导出用户数据';
$csv->SheetHeader = array('ID', '用户名', '用户年龄', '用户描述', '用户手机', '用户QQ', '用户邮箱', '用户地址');
$csv->init();
$step = 100;
$nums = 10000;


for($s = 1; $s <= $step; ++$s) {
    $start = ($s - 1) * $nums;
    $rows = $res->rows("SELECT * FROM tb_users ORDER BY id LIMIT {$start},{$nums}");


$csv->addSheetBody($rows);
  //每1万条数据就刷新缓冲区
    ob_flush();
    flush();



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值