在第一個php文件中寫一個函數(如:toExcel),吧mysql數據查詢出來,爲函數exportexcel準備數據,然後調用該函數;
在視圖模板中通過url方式,訪問第一個php文件中的toExcel函數,自動提示下載;
文件名可自定義,excel表頭根據數據列 來自定義;
第一個php文件(用的是onethink程序,語法結構是thinkphp框架):
public function toExcel(){
require_once('excel.php');
$mes = M("Message");
$data = $mes->where('status=1')->order('create_time desc')->select();
for($i=0;$i<sizeof($data);$i++){
$data[$i]['create_time']=date("Y-m-d H:i:s",$data[$i]['create_time']);;
$data[$i]['zongjia']=substr($data[$i]['zongjia'],2)."元";
}
$title = array("序號","訂單名稱","訂單備註","姓名","總價","數量","聯繫電話","地址","sort","type","狀態","下單時間","reply_info");
exportexcel($data,$title,"萊昂".date("Y-m-d H:i:s"));
}
第二個php文件(excel.php):
/**
* 導出數據爲excel表格
*@param $data 一個二維數組,結構如同從數據庫查出來的數組
*@param $title excel的第一行標題,一個數組,如果爲空則沒有標題
*@param $filename 下載的文件名
*@examlpe
$stu = M ('User');
$arr = $stu -> select();
exportexcel($arr,array('id','賬戶','密碼','暱稱'),'文件名!');
*/
function exportexcel($data=array(),$title=array(),$filename='report'){
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=".$filename.".xls");
header("Pragma: no-cache");
header("Expires: 0");
//導出xls 開始
if (!empty($title)){
foreach ($title as $k => $v) {
$title[$k]=iconv("UTF-8", "GB2312",$v);
}
$title= implode("\t", $title);
echo "$title\n";
}
if (!empty($data)){
foreach($data as $key=>$val){
foreach ($val as $ck => $cv) {
$data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);
}
$data[$key]=implode("\t", $data[$key]);
}
echo implode("\n",$data);
}
}