class Index
{
public function index()
{
return view('index');
}
public function do(){
$a = array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4,
'e' => 5,
);
$b=['訂單號','名稱','表頭名1','表頭名2','表頭名3'];
$c = array(
'1' => $a,
'2' => $a,
'3' => $a,
'4' => $a,
'5' => $a,
);
$this->toCSV('用戶訂單明細表'.date('ymdhis').'.csv',$b,$c);
}
public function toCSV($filename, $tileArray=array(), $dataArray=array()){
ini_set('memory_limit','512M');
ini_set('max_execution_time',0); //限制程序執行時間
// echo 'ini設置完成==>';
ob_end_clean(); //清空(擦除)緩衝區並關閉輸出緩衝
// echo '清空(擦除)緩衝區並關閉輸出緩衝==》';
ob_start();// 打開輸出控制緩衝
// echo '打開輸出控制緩衝成功==>';
header("Content-Type: text/csv");//header()用於發送原始 HTTP 頭
// echo 'header告訴要csv格式==》';
header("Content-Disposition:filename=".$filename); //filename指令告訴瀏覽器,附件下載的形式展示數據。
// echo 'filename指令告訴瀏覽器,附件下載的形式展示數據。==》';
// echo '<br/>';
$fp=fopen('php://output','w'); //php://output:一個只寫的數據流, fopen(,'w');將資源綁定到流中,w:寫入方式打開文件
// var_dump($fp);
// echo '以寫入方式打開一個只寫的數據流 成功==>';
// echo '<br/>';
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));//轉碼 防止亂碼(比如微信暱稱(亂七八糟的))
// echo '將內容寫到數據流中... 成功==》';
// echo '<br/>';
// $raw_post_data = file_get_contents('php://input', 'r');
// echo $raw_post_data . "\n";exit;
fputcsv($fp,$tileArray);// 該函數將行格式數據 化爲 CSV格式, 並寫入一個打開的文件。
// echo '行格式數據 化爲 CSV格式, 並寫入一個打開的文件 成功';
// fputcsv($fp,$dataArray);
$index = 0;
foreach ($dataArray as $item) {
$index++;
fputcsv($fp,$item);
}
ob_flush();
flush();
ob_end_clean();
}
}
結果: