PHP excel 导出

September 3, 2019 · PHP · 65次阅读

今天呢,讲一个很常用的功能:excl导出

做开发的小伙伴应该都知道,数据导入导出是经常干的,有些人呢会用第三方类库,其实呢,用原生的也很容易实现,下面我们就用原生整一下吧,我这边写的呢是 PHP导出,导成csv.

废话不多说直接上代码:

<?php
    $fileName = '数据总表';  //这里定义表名。简单点的就直接  
    header('Content-Type: application/vnd.ms-excel');   //header设置 (常规的导出设置)
    header("Content-Disposition: attachment;filename=".$fileName.".csv");
    header('Cache-Control: max-age=0');
    header("Content-type: text/html; charset=utf-8");

    $fp = fopen('php://output','a');    //打开php文件句柄,php:

//output表示直接输出到PHP缓存,a表示将输出的内容追加到文件末尾

    $head = ['id','姓名','班级','性别','地址'];  //表头信息

    foreach($head as $k=>$v){
        $head[$k] = iconv("UTF-8","GBK//IGNORE",$v);   

//将utf-8编码转为gbk。理由是: Excel 以 ANSI 格式打开,不会做编码识别。
//如果直接用 Excel 打开 UTF-8 编码的 CSV 文件会导致汉字部分出现乱码。

    }
    fputcsv($fp,$head);  //fputcsv() 函数将行格式$head化为 CSV 并写入一个打开的文件$fp。

    //这里呢我们就先整几条测试数据
    $test = [
        ['id'=>1,'name'=>'张三','class'=>'三年A班','sex'=>'m','addr'=>'广东广州'],
        ['id'=>2,'name'=>'李四','class'=>'三年B班','sex'=>'m','addr'=>'广东日本'],
        ['id'=>3,'name'=>'小王','class'=>'三年A班','sex'=>'w','addr'=>'湖南东京']
    ];

    $data = [];  
    foreach ($test as $key => $v) {
        //处理数据  比如把性别处理成汉字
        $data['id'] = $v['id'];
        $data['name'] = $v['name'];
        $data['class'] = $v['class'];
        $data['sex'] = $v['sex'] == 'm' ? '男':'女';
        $data['addr'] = $v['addr'];

        //编码转化 反正乱码
        foreach ($data as $kk=> $vv) {
            $data[$kk] = iconv("UTF-8","GBK",$vv);;
        }
        //写入
        fputcsv($fp,$data);
    }
    exit;//记得终止
            

是不是非常的简单呢,一点都不难

喝杯水

标签:PHP

最后编辑于:2019/09/06 18:09

添加新评论

  1. 李大爷 李大爷
    2019-09-06 17:01

    我之前也搞过这个啊,复制粘贴改参数

    回复
    1. 2019-09-06 18:10

      自己的笔记而已,方便下次自己复制粘贴

      回复

控制面板