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