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('姓名, 分数') . " "; foreach ($data as $value) { $temp = $value['name'] . ',' . $value['score']; $fileData .= $this->utfToGbk($temp) . " "; } // 头信息设置 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('姓名, 分数') . " "; foreach ($data as $value) { $temp = $value['name'] . ',' . $value['score']; $fileData .= $this->utfToGbk($temp) . " "; } $filePath = __DIR__ . '/' . $filename; // 将一个字符串写入文件 file_put_contents($filePath, $fileData); return $filePath; } /** * 字符转换(utf-8 => GBK) */ public function utfToGbk($data) { return iconv('utf-8', 'GBK', $data); }