专注WEB开发 分享经验,沉淀知识

thinkphp利用PHPExcel导出数据实践

 作者:chenxing  时间:2018-01-28 17:46  评论:

以上就是比较常见也非常简单的phpexcle数据到出方式。

下面是我利用PHPExcel导出数据到excel的一次实践。

第一步,当然是到PHPExcel官网去下载phpexcel插件,将其放到thinkphp的vendor目录下。

第二,将到入数据的具体逻辑封装到工具类中。具体逻辑代码如下:

class UntilLogic
{
    public function phpExcelList($field, $list, $title='文件')
    {
        vendor('phpExcel.PHPExcel');
        $objPHPExcel = new \PHPExcel();
        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式
        foreach ($list as $key => $value) {
            foreach ($field as $k => $v) {
                if ($key == 0) {
                    $objPHPExcel->getActiveSheet()->setCellValue($k . '1', $v[1]);
                }
                $i = $key + 2; //表格是从2开始的
                $objPHPExcel->getActiveSheet()->setCellValue($k . $i, $value[$v[0]]);
            }

        }
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");;
        header('Content-Disposition:attachment;filename='.$title.'.xls');
        header("Content-Transfer-Encoding:binary");
//        $objWriter->save($title.'.xls');
        $objWriter->save('php://output');
    }
}

第三步,读取需要下载数据,和组合excel数据标题$field参数,直接调用第二步的方法。

opublic function outExcelRecharge() {
        $where = "1=1";
        $data = $dbEngin->field('transactions.*,u.name as uname, k.name as kname')->where($where)->order('id desc')->select();
        foreach ($data as $key => $value) {
            $data[$key]['price'] = number_format($data[$key]['price']/100,2);
            $data[$key]['uname'] = filterEmoji($value['uname']);
        }
        $field = array(
            'A' => array('id', 'ID'),
            'B' => array('user_id', '用户ID'),
            'C' => array('uname', '用户名称'),
            'D' => array('created', '时间'),
            'E' => array('order_id', '订单号'),
            'F' => array('price', '金额(元)'),
            'G' => array('coins', '充值金币数'),
            'H' => array('device_id', '设备ID'),
            'I' => array('ktv_id', 'ktvID'),
            'J' => array('kname', 'ktv名称'),
            'K' => array('status', '状态(paid:已付款,refunded:已退款,pending:处理中)')
        );
        $until = new UntilLogic();
        $until->phpExcelList($field, $data, '充值列表_' . date('Y-m-d'));
    }

以上就是比较常见也非常简单的phpexcle数据到出方式。

除特别注明外,本站所有文章均为作者原创。 或分享自己的编程经验,或探讨工作中的问题,或聊以人生趣事。 转载请注明出处来自 https://www.qiusuoweb.com/118.html

发布评论

 提交评论
有人回复时邮件通知我

 评论(0)

站长头像
chenxing(PHP攻城狮)

运营天数

总访问量

文章数量

-

-

-

交流群:157451741

新浪微博:草莽兴

 近期文章

聊聊国产化

 2024-08-24 15:56  97

内网穿透工具frp配置详情

 2024-07-18 22:30  192

mac在终端复制出现乱码00~ *** 01~

 2024-07-16 20:38  43

php html生成图片

 2024-07-08 20:25  82

scp命令使用说明

 2024-07-06 12:14  113

如何在当前目录打开终端

 2024-07-04 14:54  84

 最新评论

 tradeOff: 08月30日 10:19
在某些领域国产化是一个迫不得已的事儿
来源: 聊聊国产化
 sue: 07月03日 10:24
可以
来源: 微信小程序如何获取单个input值
 流年: 07月02日 11:31
不错的尝试
来源: 博客系统如何用markdown编辑器发布文章
 诚心: 09月29日 23:01
学到了
来源: 如何一次性推送百万级别的消息
 Nick: 04月14日 12:26
网上的资料还是太老,都只是取一个元素,解决了一大难题
来源: redis set集合取出一组数据并删除
 skywalker: 11月03日 18:21
简洁明了
来源: mysql 获取某个日期的前一天或后一天