php header導出Excel的代碼

分享一例php使用header函數導出excel文件的代碼。

代碼:

<?php
class reportFormAction extends CommonAction{
public function index(){
if($_POST){
//@param $data array 需要導出的數據
//@param $field string 導出csv文件的列名
//@param $filename string 需要導出csv文件的名字
$where = '1';
$order = 'creative_id desc';
if($_POST['crea_wh'] == 1) $order .= "";
if($_POST['crea_wh'] == 2) $order .= "creative_time desc";
$star = strtotime($_POST['control_star']);
$end = strtotime($_POST['control_end']);
if($star && $end) $where .= " and (create_time between $star and $end)";
if($_POST['creative_type'] == 1) $where .= " and creative_type =1";
if($_POST['creative_type'] == 2) $where .= " and creative_type =2";
if($_POST['creative_type'] == 3) $where .= " and creative_type =3";
if($_POST['sort_name'] == 1) $where .= " and sort_name = '技術類'";
if($_POST['sort_name'] == 2) $where .= " and sort_name = '包裝類'";
if($_POST['sort_name'] == 3) $where .= " and sort_name = '產品類'";
if($_POST['sort_name'] == 4) $where .= " and sort_name = '營銷類'";
if($_POST['sort_name'] == 5) $where .= " and sort_name = '其他類'";
if($_POST['two_status']==0) {$where .= " and two_status=0"; $fenlei1="一句話創意";}
if($_POST['two_status']==1) {$where .= " and two_status=1"; $fenlei2="標準創意";}
$csv = '';
$lists = M('creative')->where($where)->order($order)->select();
if(is_array($lists) && count($lists)>0) {
if(empty($filename)) {
$filename = date('Y-m-d',time()).'.csv';
}
header('Content-type:application/vnd.ms-excel');
header('Content-Disposition:p_w_upload;filename='.$filename);
header('Pragma:no-cache');
header('Expires:0');
if($_POST['two_status']==0){
$csv= '分類,創意ID,創意類型,創意標籤,創意標題,創意描述,評論數, 收藏數,投票數,提交人,作者'."\n"; www.jbxue.com
}elseif($_POST['two_status']==1){
$csv= '分類,創意ID,創意類型,創意標籤,創意標題,創意描述,評論數, 收藏數,投票數,提交人,作者,合作者,核心創新點說明,市場計劃,已有類似商業化案例,相關專利狀況,實現方式討論,發表時間'."\n";
}else{
$csv= '分類,創意ID,創意類型,創意標籤,創意標題,創意描述,評論數, 收藏數,投票數,提交人,作者,合作者,核心創新點說明,市場計劃,已有類似商業化案例,相關專利狀況,實現方式討論,發表時間'."\n";
}
foreach($lists as $list =>$v) {
if($v['creative_type'] == 1){
$type = '問題';
}elseif($v['creative_type'] == 2){
$type = '解決方式';
}elseif($v['creative_type'] == 3){
$type = '新創意';
}
if($v['two_status']==0) $fenlei="一句話創意";
if($v['two_status']==1) $fenlei="標準創意";
if($_POST['two_status']==0){ //一句話
$csv .= $fenlei1.','.$v['creative_id'].",".$v['sort_name'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['comment_num'].','.$v['collect_num'].','.$v['vote_num'].','.$v['submitter'].','.$v['author']."\n";
}elseif($_POST['two_status']==1){ //標準
$csv .= $fenlei2.','.$v['creative_id'].",".$v['sort_name'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['comment_num'].','.$v['collect_num'].','.$v['vote_num'].','.$v['submitter'].','.$v['author'].','.$v['collaborator'].','.$v['innovation_description'].','.$v['marketing_plan'].','.$v['business_case'].','.$v['patent_situation'].','.$v['discuss_ways'].','.strtotime($v['create_time'])."\n";
}else{ //全部
$csv .= $fenlei.','.$v['creative_id'].",".$v['sort_name'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['comment_num'].','.$v['collect_num'].','.$v['vote_num'].','.$v['submitter'].','.$v['author'].','.$v['collaborator'].','.$v['innovation_description'].','.$v['marketing_plan'].','.$v['business_case'].','.$v['patent_situation'].','.$v['discuss_ways'].','.strtotime($v['create_time'])."\n";
} // www.jbxue.com 腳本學堂
}
echo mb_convert_encoding($csv,"CP936","UTF-8");
}else{
$this->assign("msg",$msg);
}
exit;
}
$this->display();
}
public function votecount(){
if($_POST){
//@param $data array 需要導出的數據
//@param $field string 導出csv文件的列名
//@param $filename string 需要導出csv文件的名字
$where = '1';
if($_POST['crea_order'] == 1) $order = " c.vote_num desc";
$star = strtotime($_POST['control_star']);
$end = strtotime($_POST['control_end']);
if($star && $end) $where .= " and (c.vote_start_time between $star and $end) and (c.vote_end_time between $star and $end)";
$sql ="select c.sort_name,c.creative_id,c.creative_type,c.creative_name,c.creative_description,c.vote_num,c.comment_num,c.collect_num,c.create_time, u.username from cofco_creative as c left join cofco_userinfo as u on c.uid = u.uid where $where order by $order ";
$lists = M()->query($sql);
$csv = '';
if(is_array($lists) && count($lists)>0) {
if(empty($filename)) {
$filename = date('Y-m-d',time()).'.csv';
}
header('Content-type:application/vnd.ms-excel');
header('Content-Disposition:p_w_upload;filename='.$filename);
header('Pragma:no-cache');
header('Expires:0');
$csv = '創意標籤,提交者,創意分類,創意標題,創意簡述,得票數,評論數, 收藏數,上傳時間'."\n";
foreach($lists as $list =>$v) {
if($v['creative_type'] == 1){
$type = '問題';
}elseif($v['creative_type'] == 2){
$type = '解決方式';
}elseif($v['creative_type'] == 3){
$type = '新創意';
}
$time = date("Y-m-d H:i:s",$v['create_time']);
$csv .= $v['sort_name'].','.$v['username'].','.$type.','.$v['creative_name'].','.$v['creative_description'].','.$v['vote_num'].','.$v['comment_num'].','.$v['collect_num'].','.$time."\n";
}
echo mb_convert_encoding($csv,"CP936","UTF-8");
}else{
$this->assign("msg",$msg);
}
exit;
}
$this->display();
}
}
?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章