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);
}