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

直接输出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>

你可能感兴趣的文章

小刘太郎 · 2017年09月22日

给力

+2 回复

array_huang · 2017年09月22日

牛逼啊,这是什么骚操作啊有参考资料吗?

+1 回复

1

@array_huang 没,只是看到Excel可以另存为html格式联想到的。

王道中强流 作者 · 2017年09月22日
2

@王道中强流 那有测试过各个版本的excel都能打开这样子导出来的文件吗?

array_huang · 2017年09月22日
唐家三叔 · 2017年09月24日

加上这句<meta http-equiv=Content-Type content="text/html; charset=utf-8">解决中文乱码问题。
另外通过设置table的属性,可以设置表格的一些简单样式,如背景颜色,合并单元格等。
不过,通过这种方法生成的.xls文件,打开时会提示“文件格式和扩展名不匹配。”,另外.xlsx格式不能通过这种方式生成。
个人理解这和直接将内容写入一个.xls文件中没啥区别(如果不要求样式的话)。

+1 回复

载入中...
王道中强流 王道中强流

1.6k 声望

发布于专栏

王道中强流

不为繁华易匠心

7 人关注