13

这方法我一直在用,根本用不着类库框架什么的,

直接输出html格式的<table>就好了,并且指定为Excel的Mime。

$table = "<table>
    <thead>
    <tr>
        <th>姓名</th>
        <th>电话</th>
        <th>身份证</th>
        <th>购买产品</th>
        <th>消费金额</th>
        <th>奖品</th>
        <th>时间</th>
    </tr>
    </thead>
    <tbody>";

foreach ($all as $r) {
    $table .= "<tr>
        <td>{$r->name}</td>
        <td>{$r->mobile}</td>
        <td>{$r->idcard}&nbsp;</td>
        <td>{$r->product}</td>
        <td>{$r->price}</td>
        <td>{$r->prize_level}:{$r->prize_name}</td>
        <td>{$r->create_time}</td>
    </tr>";
}

$table .= "</tbody></table>";

header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.xls"');
echo $table;

对了,这里有个小技巧:
像身份证号码这么长的线数字,Excel显示的时候最后几位会变成00000。
解决办法就是在单元格里面加个&nbsp;
像这样:<td>{$r->idcard}&nbsp;</td>


王道中强流
1.7k 声望44 粉丝

在福州“土生土长”的 1986 年老程序员一枚,专注 Web 技术三十年。