將取出的資料會出CSV,並且儲存下來。
以下是重點三行
$fp = fopen($filename,"w"); fwrite($fp,$insert_row) fclose($fp);實際範例
function export_csv(){ //指定匯出的資料夾 $export_dir = 'C:\xampp\tmp\joan'; //匯出時間 $date_dir = date(Ymd); //檢查目錄是否存在 if (is_dir($export_dir) === false) { //使用 exec 建立多層目錄, $output 不論成功與否, 都回傳empty,所以用 is_dir() 判斷是否建立成功 exec("mkdir -p ".$export_dir, $output); //無法建立目錄時, 顯示錯誤訊息 if(is_dir($export_dir)) { throw new Exception('無法建立目錄'); } } //跑之前, 先刪除該天的VSC資料與資料夾 exec("rm -rf".$this->export_dir."/".$date_dir."*", $output); //檔名 $filename = $export_dir.'/'.$date_dir.'.csv'; if (!$fp = fopen($filename,"w")) { throw new Exception('建立CSV檔失敗'); } //UTF-8 NO BON $insert_row = "\xEF\xBB\xBF"; if (fwrite($fp,$insert_row) === false) { throw new Exception('建立CSV檔失敗'); } //標頭 $insert_row = '"姓名","ID","性別"'; $insert_row .= "\n"; if (fwrite($fp,$insert_row) === false) { throw new Exception('建立CSV檔失敗'); } //給資料 $main_data = ['name' => 'joan','id' => '00001','gender' =>'F'],['name' => 'Fifi','id' => '00002','gender' =>'F']; foreach($main_data as $sm) { //初始化 $insert_row = ""; $insert_row = '"'.$sm['name'].'"'; $insert_row = '"'.$sm['id'].'"'; $insert_row = '"'.$sm['gender'].'"'; } if (fwrite($fp,$insert_row) === false) { throw new Exception('建立CSV檔失敗'); } fclose($fp); }比較編碼問題,常見的兩種寫法
//註一 //fwrite($fp, iconv('UTF-8', 'BIG5')); //註二 fwrite($fp, "\xEF\xBB\xBF");說明:
註1,為原本使用方法,若遇到Big5中無相對應之字,則會發生內容遺失的情況。
註2,此為寫入BOM標籤,目的在使Excel能正確讀取UTF-8編碼。