參考資料
在做單位的一個(gè)小系統(tǒng)時(shí)培漏,需要把一些數(shù)據(jù)導(dǎo)出為excel表格畸悬,經(jīng)過搜索及調(diào)試,參考資料內(nèi)的方法完全可用,記錄在此。
因數(shù)據(jù)量不大思灌,對(duì)參考資料內(nèi)的function做了一些精簡蜈垮。
/**
* 導(dǎo)出excel(csv)
* @data 導(dǎo)出數(shù)據(jù)
* @headlist 第一行,列名
* @fileName 輸出Excel文件名
*/
function csv_export($data = array(), $headlist = array(), $fileName) {
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fileName.'.csv"');
header('Cache-Control: max-age=0');
//打開PHP文件句柄,php://output 表示直接輸出到瀏覽器
$fp = fopen('php://output', 'a');
//輸出Excel列名信息
foreach ($headlist as $key => $value) {
//CSV的Excel支持GBK編碼惠猿,一定要轉(zhuǎn)換,否則亂碼
$headlist[$key] = iconv('utf-8', 'gbk', $value);
}
//將數(shù)據(jù)通過fputcsv寫到文件句柄
fputcsv($fp, $headlist);
$count = count($data);
for ($i = 0; $i < $count; $i++) {
$row = $data[$i];
foreach ($row as $key => $value) {
$row[$key] = iconv('utf-8', 'gbk', $value);
}
fputcsv($fp, $row);
}
}
$headlist是標(biāo)題行腹缩,定義為數(shù)組润讥,
$headlist = array("列1", "列2", "列3", "列4", "列5",);
$data是需輸出的數(shù)據(jù)竿痰,是從數(shù)據(jù)庫中讀取出的多行數(shù)據(jù),構(gòu)建為二維數(shù)組
$data[$i] = array("列1數(shù)據(jù)", "列2數(shù)據(jù)", "列3數(shù)據(jù)", "列4數(shù)據(jù)", "列5數(shù)據(jù)",);
調(diào)用csv_export即可匣缘。