php导出 excel文件 实现方式

来源:互联网 发布:淘宝发顺丰要补多少钱 编辑:程序博客网 时间:2024/06/05 05:37

1、第一种方式
使用插件 excel实现

public function getExport(){    header("Content-Type: application/vnd.ms-excel");    header("Expires: 0");    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");    header("content-disposition: attachment;filename=info.xls");    require_once app_path().'/extends/excel/excel.class.php';    $xls = new Excel_XML('UTF-8', false);    $oUser = User::all();    $aInfo = array();    $aInfo[] = array('ID','姓名', '年龄', '性别', '创建时间');//标头    foreach($oUser as $obj){        $aInfo[] = array($obj->id , $obj->name, $obj->gender, $obj->sex, $obj->created_at);    }    $xls->addSheet("info",$aInfo);    $contents = $xls->generateXML('info.xls');//创建XML文件    exit;}

excel.class.php 下载链接:http://phpexcel.codeplex.com/

2、原生导出方式一
生成文件返回下载链接

public function postVisitExport(){    $oUser = $oUser::all();    set_time_limit(0);    $sname = time();    $dataname = date('Ymd');    $exportdir = public_path()."/exportfile/".$dataname."/";    if(!is_dir($exportdir))    {        mkdir($exportdir,0777,true);    }    //生成csv文件    $elsfile = $exportdir.$sname.'.csv';    $fp = fopen($elsfile, 'w');    $data = "";    $title = implode(',', array('ID','姓名','年龄','性别','添加时间'));    $data = $title;    foreach($oUser as $v)    {        $line = implode(',', array($v->id,$v->name,$v->gender,$v->sex,$v->created_at));        $data = $data."\r\n".$line;    }    $data = iconv("UTF-8", "GBK//TRANSLIT", $data);    fwrite($fp,$data); // 写入数据    fclose($fp); //关闭文件句柄    $download_dir = "/exportfile/".$dataname.'/'.$sname.'.csv';    return $download_dir;}

3、原生导出方式二
直接输出

public function getDebateVideo(){    $oUser = User::all();    header("Cache-Control: public");    header("Pragma: public");    header("Content-type:application/vnd.ms-excel");    header("Content-Disposition:attachment;filename=info".date('Ymdhis').".csv");    header('Content-Type:APPLICATION/OCTET-STREAM');    ob_start();    $header_str = iconv("utf-8",'gbk',"ID,姓名,年龄,性别,创建时间\n");    $file_str="";    foreach($oUser as $v){        $file_str.= $v->ID.','.$v->name.','.$v->gender.','.$v->sex.','.$v->created_at."\n";    }    $file_str= iconv("utf-8",'GBK//TRANSLIT',$file_str);    ob_end_clean();    echo $header_str;    echo $file_str;}


原生导出方式,需要对特殊字符串进行转换
使用iconv函数
文档:http://php.net/manual/zh/function.iconv.php