0

0

tp5中phpexcel生成表格实例分享

小云云

小云云

发布时间:2018-03-09 14:24:46

|

3007人浏览过

|

来源于php中文网

原创

最近项目中需要使用使用phpexcel生成表格,但是在由网页导出excel时,文件的后缀总是会带上html。后来调试了半天发现,需要在header头输出之前使用ob_end_clean( )去清除php缓冲区中的内容。因为在herder头输出之前,php是不能有任何输出的,哪怕是一个空格,一旦有了输出,你设置的php header头就无效了,因为此时的header头信息早已经固定。

输出excle时出现乱码的情况也是用这种方式解决。

 /**
     * 下载excel表格
     */
    public function down_excel()
    {
        $params = $_GET;
        $filename = $params['cname'] . '收银明细列表' . date('Y-m-d');
        $objPHPExcel = new \PHPExcel();
        //设置表头信息
        $letter = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L');
        $excel_column = array(
            'id' => "订单号",
            'dt' => "交易时间",
            'money' => "金额",
            'status' => "交易状态",
            'pay_type' => "支付渠道",
            'device' => "终端号",
            'operator' => "收银员",
            'pay_id' => "渠道流水号",
            'client_name' => "商户名称",
            'pay_scense' => "支付场景",
            'operate_fee' => "手续费",
            'no' => "小票单号",
        );
        $new_letter = [];
        $new_excel_column = [];
        foreach ($params['act_name'] as $k => $d) {
            $new_letter[$d] = $letter[$k];
            $new_excel_column[$d] = $excel_column[$d];
        }
        foreach ($new_excel_column as $k => $d) {
            //设置行宽自动调整
            $objPHPExcel->getActiveSheet()->getColumnDimension($new_letter[$k])->setWidth(12);
            $objPHPExcel->getActiveSheet()->setCellValue($new_letter[$k] . '1', $d);
        }
        //填充表格信息
        $data['rows'] = [];
        foreach ($params['down_class'] as $item) {
            switch ($item) {
                case 'pay_success':
                    $params['dm_status'] = 2;
                    break;
                case 'refund_success':
                    $params['dm_status'] = 4;
                    break;
                case 'pay_fail':
                    $params['dm_status'] = 3;
                    break;
                case 'pay_undefined':
                    $params['dm_status'] = 5;
                    break;
            }
            $ret = $this->getData($params);
            $data['rows'] = array_merge($data['rows'], $ret['rows']);
        }
        $total = 0;
        if (!empty($data['rows'])) {
            foreach ($data['rows'] as $k => $d) {
                $i = $k + 2;
                foreach ($new_letter as $key => $item) {
                    //填充数据
                    $objPHPExcel->getActiveSheet()->setCellValue($item . $i, strip_tags($d[$key]));
                }
                $total += strip_tags($d['money']);
            }
        }
        $index = count($data['rows']) + 2;
        $objPHPExcel->getActiveSheet()->mergeCells("A{$index}:B{$index}");
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $index, '合计');
        $objPHPExcel->getActiveSheet()->setCellValue('C' . $index, $total);
        //保存表格版本格式
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");
        //下载表格
        ob_end_clean();    //关闭缓冲区之后再输出header头,在header设置之前,可能某个地方有了输出,导致Content-Type的类型为text/html,所以输出的表格后缀才会是html
        header('Content-Type: application/octet-stream');
        header("Content-Disposition: attachment; filename=\"{$filename}.xlsx\"");
        $objWriter->save("php://output");
    }

相关推荐:

phpexcel在linux系统报错如何解决

TP3.2中phpexcel导入excel方法分享

BEES企业网站管理系统3.4
BEES企业网站管理系统3.4

主要特性: 1、支持多种语言 BEES支持多种语言,后台添加自动生成,可为每种语言分配网站风格。 2、功能强大灵活 BEES除内置的文章、产品等模型外,还可以自定义生成其它模型,满足不同的需求 3、自定义表单系统 BEES可自定义表单系统,后台按需要生成,将生成的标签加到模板中便可使用。 4、模板制作方便 采用MVC设计模式实现了程序与模板完全分离,分别适合美工和程序员使用。 5、用户体验好 前台

下载

立即学习PHP免费学习笔记(深入)”;

PHPExcel如何实现合并与拆分单元格

相关文章

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP快速操控Excel之PhpSpreadsheet
PHP快速操控Excel之PhpSpreadsheet

共16课时 | 7.9万人学习

PHP课程
PHP课程

共137课时 | 8.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号