CSV檔案是以純文本形式存盤的,一般以逗號為分隔符,
這里主要簡單介紹下如何匯出CSV檔案,
一、瀏覽器匯出CSV檔案格式
/** * 匯出CSV檔案 */ function exportCsv() { // 需要匯出的內容 $data = [ ['name' => '張三', 'score' => '80'], ['name' => '李四', 'score' => '90'], ['name' => '王五', 'score' => '60'], ]; // 檔案名,這里都要將utf-8編碼轉為gbk,要不可能出現亂碼現象 $filename = $this->utfToGbk('匯出csv檔案.csv'); // 拼接檔案資訊,這里注意兩點 // 1、欄位與欄位之間用逗號分隔開 // 2、行與行之間需要換行符 $fileData = $this->utfToGbk('姓名, 分數') . "\n"; foreach ($data as $value) { $temp = $value['name'] . ',' . $value['score']; $fileData .= $this->utfToGbk($temp) . "\n"; } // 頭資訊設定 header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=" . $filename); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); echo $fileData; exit; } /** * 字符轉換(utf-8 => GBK) */ function utfToGbk($data) { return iconv('utf-8', 'GBK', $data); }
二、在服務器生成CSV檔案
/** * 下載CSV檔案 */ public function downLoadCsv() { // 需要匯出的內容 $data = [ ['name' => '張三', 'score' => '80'], ['name' => '李四', 'score' => '90'], ['name' => '王五', 'score' => '60'], ]; // 檔案名,這里都要將utf-8編碼轉為gbk,要不可能出現亂碼現象 $filename = $this->utfToGbk('生成csv檔案.csv'); // 拼接檔案資訊,這里注意兩點 // 1、欄位與欄位之間用逗號分隔開 // 2、行與行之間需要換行符 $fileData = $this->utfToGbk('姓名, 分數') . "\n"; foreach ($data as $value) { $temp = $value['name'] . ',' . $value['score']; $fileData .= $this->utfToGbk($temp) . "\n"; } $filePath = __DIR__ . '/' . $filename; // 將一個字串寫入檔案 file_put_contents($filePath, $fileData); return $filePath; } /** * 字符轉換(utf-8 => GBK) */ public function utfToGbk($data) { return iconv('utf-8', 'GBK', $data); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110754.html
標籤:PHP
