學習tp3的程序員都知道,php導(dǎo)出excel文件只要通過第三方類庫PHPExcel即可實現(xiàn),而且簡單方便,代碼如下圖所示:
但有時因為是無法設(shè)置各個字段的寬度,有時會很多顯示的問題,所以我下面講的是用自己的方法生成的excel文件,它的原理跟生成純靜態(tài)頁面是一樣的,就是把html的文件換成excel文件而已,直接看下面代碼:
靜態(tài)頁面:Excel.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge, chrome=1">
<meta name="renderer" content="webkit">
<title></title>
<style type="text/css">
.table_list{border-collapse:collapse;margin:0px auto;margin-top:10px; background-color:#FFF;}
.table_list th {padding:15px 0;line-height:3;}
.table_list td{line-height:40px; height:40px;padding:10px 5px;text-align:center;}
.table_list thead td{text-align:center; height:40px; background-color:#eee;font-weight:bold;word-break:break-all;}
.table_list tfoot td{background-color:#ececec;text-align:center;}
</style>
</head>
<div class="list">
<table class="table_list" border="1"><thead><tr><th>姓名</th><th>等級</th><th>備注</th></tr></thead><tbody>
<foreach name="list" item="item" key="i">
<tr >
<td class="am-text-middle">{$item.realname}</td>
<td class="am-text-middle">{$item.level}</td>
<td class="am-text-middle">{$item.detail}</td>
</tr>
</foreach>
</tbody>
</table></div>
</body></html>
控制器(節(jié)選):
function excel(){
$this->assign('list', $lists); // 賦值數(shù)據(jù)集
$content = $this->fetch('excel');
$filename = "excel/member_".date('Ymdhis').rand(10000).".xls";//導(dǎo)出的文件名稱
$handle=fopen($filename,"w");//不存在這個文件就創(chuàng)建;
fwrite($handle,$content);//將excel.html內(nèi)容寫到文件里
$file = fopen($filename,"r"); // 打開文件
// 輸入文件標簽
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($filename));
Header("Content-Disposition: attachment; filename=" . $filename);// 輸出文件內(nèi)容
echo fread($file,filesize($file_dir . $filename)); //保存內(nèi)容,并打開或下載文件
fclose($file);
exit();
}
全部代碼如下所示:
導(dǎo)出的文件打開后如下圖所示:
如果需要設(shè)置表格的屬性,可以直接在table或excel.html文件里設(shè)置就可以了,但如果插入圖片,圖片的大小顯示不好控制,只能原圖顯示大小,所以要注意這一點。
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://m.oulysa.com/news/6382.html