yii導(dǎo)出CSV代碼如下:
/** ?*?導(dǎo)出csv ?*?@author?yhdsir ?*?@param?array????$parameter?header?表頭 ?*?@param?array????$parameter?data???數(shù)據(jù) ?*?@param?string???$filename?????????導(dǎo)出名字 ?*/ public?function?export($parameter,?$filename?=?'') { ????if?(empty($filename))?{ ????????$filename?=?date('Y-m-d_H-i-s'); ????} ????$filename?=?str_replace(array('"',?"'",?'?',?','),?'_',?$filename)?.?'.csv'; ????if?(is_array($parameter))?{ ????????header('Content-Type:?application/vnd.ms-excel'); ????????header('Cache-Control:?max-age=0'); ????????header("Content-Disposition:?attachment;filename={$filename}"); ????????$fp?=?fopen('php://output',?'w'); ????????//fwrite($fp,?chr(0xEF)?.?chr(0xBB)?.?chr(0xBF));??//?添加?BOM ????????if?(!empty($parameter['header'])?&&?is_array($parameter['header']))?{ ????????????foreach?($parameter['header']?as?$i?=>?$v)?{ ????????????????//?CSV的Excel支持GBK編碼,一定要轉(zhuǎn)換,否則亂碼? ????????????????//?$head[$i]?=?iconv('utf-8',?'gbk',?$v);? ????????????????$parameter['header'][$i]?=?iconv('utf-8',?'gb2312//TRANSLIT//IGNORE',?$v); ????????????} ????????????//?將數(shù)據(jù)通過fputcsv寫到文件句柄? ????????????fputcsv($fp,?$parameter['header']); ????????} ????????if?(isset($parameter['data']))?{ ????????????foreach?($parameter['data']?as?$row)?{ ????????????????foreach?($row?as?$i?=>?$v)?{ ????????????????????$row[$i]?=?iconv('utf-8',?'gb2312//TRANSLIT//IGNORE',?$v); ????????????????} ????????????????fputcsv($fp,?$row); ????????????} ????????} ????????fclose($fp); ????????return?true; ????} ????throw?new?yiiwebHttpException(500,?"Not?a?valid?parameter!"); }
iconv?—?字符串按要求的字符編碼來轉(zhuǎn)換
說明?
iconv?(?string?$in_charset?,?string?$out_charset?,?string?$str?)?:?string
將字符串?str?從?in_charset?轉(zhuǎn)換編碼到?out_charset。
參數(shù)?
in_charset:輸入的字符集。
out_charset:輸出的字符集。
str:要轉(zhuǎn)換的字符串。
返回值:返回轉(zhuǎn)換后的字符串, 或者在失敗時返回?FALSE。
推薦學(xué)習(xí):yii教程
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END