使用php導出csv文件主要是有兩個部分的內(nèi)容:
- 按csv文件的格式準備好數(shù)據(jù);
- php header() 函數(shù)罩锐,它是用來向客戶端發(fā)送 HTTP 報頭的奉狈。
下面以一個具體的例子說明:
public function exportCsv()
{
$title = 'ID, 學號, 姓名, 性別' . "\n";
// 這里需要注意,"\n"必須使用雙引號
$data = '';
$students = Student::find()->asArray()->all();
// 這里使用的是Yii2.0框架
foreach ($student as $value) {
$id = iconv('utf-8','gb2312',$value['id']);
$number = iconv('utf-8','gb2312',$value['number']);
// 轉(zhuǎn)化字符的編碼涩惑,下同
$name = iconv('utf-8','gb2312',$value['name']);
$gender = iconv('utf-8','gb2312',$value['gender']);
$data .= $id . ',' .$number . ',' . $name . ',' . $gender;
$data .= "\n";
}
$data = $title.$data; // 到此數(shù)據(jù)已經(jīng)準備好
$filename = date('Ymd', time()). '.csv';
$this->setCsvHeader($filename, $data);
}
public function setCsvHeader($filename, $data)
{
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 $data;
}