<?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);
}
}
/**
* @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();
}