首页 PHP 正文
184

PHP导出数据到excel或者csv格式(不依赖第三方库)

  • yiqingpeng
  • 2015-05-17
  • 0
  •  
csv格式:
    $data['fname'] = date('YmdHis').'.csv';//文件名
    if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { // 解决IE浏览器输出中文文件名乱码的bug
        $data['fname'] = urlencode($data['fname']);
        $data['fname'] = str_replace('+', '%20', $data['fname']);
    }
    header("Content-type:text/csv;");
    header("Content-Disposition:attachment;filename=" . $data['fname']);
    header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
    header('Expires:0');
    header('Pragma:public');
    $csv_data = '序号,姓名,手机号,电子邮箱,是否合法用户,填写时间'."\r\n";//csv中数据列以英文逗号分隔,列数据项可以用双引号括起来,如果数据中带有双引号,那么可以用双引号进行转义。换行符用\r\n,但必须在php中用双引号括起来。
    $i=0;
    foreach($result as $item){
        $i++;
        $csv_data .= $i.',';
        $csv_data .= '"'.str_replace('"','""',stripslashes($item['FTrueName'])).'",';
        $csv_data .= '"'.str_replace('"','""',stripslashes($item['FMobile'])).'",';
        $csv_data .= '"'.str_replace('"','""',stripslashes($item['FEmail'])).'",';
        $csv_data .= '"'.($item['FMark']?'是':'否').'",';
        $csv_data .= '"'.str_replace('"','""',stripslashes($item['FTime'])).'"';
        $csv_data .= "\r\n";
    }
    $csv_data = mb_convert_encoding($csv_data, "cp936", "UTF-8");
    
    echo $csv_data;

xls格式:
    $data['fname'] = date('YmdHis').'.xls';//文件名
    header("Content-type:application/octet-stream");
    header("Accept-Ranges:bytes");
    header("Content-Type: application/vnd.ms-execl");   
    header("Content-Disposition: attachment; filename={$data['fname']}");   
    header("Pragma: no-cache");   
    header("Expires: 0");
    
    echo '<head><meta http-equiv="Content-Type" charset=utf-8" /></head>';//不加这一句,有时候会输出乱码
  
    echo '
    <table border="0" cellpadding="0" cellspacing="1" >
          <tr>
            <td>序号</td>
            <td>姓名</td>
            <td>手机号</td>
            <td>电子邮箱</td>
            <td>是否合法用户</td>
            <td>填写时间</td>
          </tr>';
    $i=0;
    foreach($result as $item){
        $i++;
        echo '
          <tr>
                <td>'.($i).'</td>
                <td>'.$item['FTrueName'].'</td>
                <td>'.$item['FMobile'].'</td>
                <td>'.$item['FEmail'].'</td>
                <td>'.($item['FMark']?'是':'否').'</td>           
                <td>'.$item['FTime'].'</td> 
          </tr>
        ';
    }
    
    echo '</table>';


正在加载评论...