將取出的資料會出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編碼。