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

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

99

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

132

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

15

2026.01.23

php远程文件教程合集
php远程文件教程合集

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

65

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

63

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.22

热门下载

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

精品课程

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

共16课时 | 8万人学习

PHP课程
PHP课程

共137课时 | 9.3万人学习

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

共6课时 | 10.5万人学习

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

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