PHP输出Excel两种方法

2016年3月23日 16:43:51 星期三

第一种: 输出html+css格式, 打开后用Excel软件的"另存为"功能保存为正规的表格格式

 1 public function echoExcel($list)
 2 {
 3     $body = '';
 4     $tr = '<tr style="border-right: 1px solid lightgrey;border-bottom: 1px solid lightgrey;">';
 5     $tds = '<td>';
 6     $tde = '</td>';
 7 
 8     $title = $tr.'<td>aaa</td>
 9         <td>bbb</td>
10         </tr>';
11     $userModel = new UserModel();
12     foreach ($list as $v) {
13         $aaa   = $tds.$v['aaa'].$tde;
14         $bbb   = $tds.$v['bbb'].$tde;
15         $body .= $tr.$aaa.$bbb.'</tr>';
16     }
17 
18     header('Content-Type: application/vnd.ms-excel');
19     header('Content-Disposition: attachment;filename="'.date('Y_m_d_H_i_s').'.xls"');
20     
21 $table = '<table style="border: 1px solid lightgrey; border-collapse: collapse;">'; 22 echo $table.$title.$body.'</table>'; 23 exit; 24 }

 注意: mac打不开, mac与windows打开excel的软件不同

windows打开后可以另存为正规格式的excel

第二种: 不用css, 只用逗号, 以csv的方式输出

 1 function export()
 2 {
 3     $list = [
 4         ['1111', '2222'],
 5         ['1111', '2222'],
 6     ];
 7     $content = 'aaa,bbb'.PHP_EOL;//csv标题
 8     foreach ($list as $line) {
 9         $content .= implode(',', $line).PHP_EOL;
10     }
11 
12     //下载文件需要用到的头
13     header('Content-type: application/octet-stream');
14     header('Accept-Ranges: bytes');
15     header('Accept-Length:' . strlen($content));
16     header('Content-Disposition: attachment; filename='.date('YmdHis').'.csv');
17     echo "xEFxBBxBF"; //utf-8 bom
18     echo $content;
19 }

注意, 使用的时候, 在新窗口打开, 不要用ajax请求:

<a href="/export" target="_blank">
原文地址:https://www.cnblogs.com/iLoveMyD/p/5311807.html