PHPExcel的使用

使用composer安装phpexcel:

composer require phpoffice/phpexcel

 

安装完成后,你会发现,wendor目录下多出来了phpoffice/phpexcel/...文件夹。

 

 

使用步骤:

1、实例化PHPExcel类 - 相当于新建一个excel表格

2、调用类里面的以下方法:

  1)createSheet()方法 - 创建一个sheet

  2)setActiveSheetIndex()方法 - 指定需要操作的是那个sheet

  3)getActiveSheet()方法 - 获得当前活动状态的工作表,返回工作表对象

3、填充数据:setCellValue()方法

4、保存文件:PHPExcel_IOFactory::createWriter()方法、save()方法。

 

 

使用前,需要类的前面加上:

use \PHPExcel;
use \PHPExcel_IOFactory;

  

真是开发例子如下,更多的使用请看官方包里面的例子:

<?php

namespace app\admin\controller;

use think\Controller;
//use think\Request;
use \PHPExcel;
use \PHPExcel_IOFactory;

class Export extends Controller //Common的父类是Controller,Controller有自己的构造方法。
{
    public function exportOrder()
    {
        $res = [
            'order_id' => 'desc',
        ];
        $orderList = db('order')->order($res)->limit(10000)->select();
        $objPHPExcel = new PHPExcel();//创建一个新的excel文档
        $objSheet = $objPHPExcel->getActiveSheet();//获取当前操作sheet的对象
        $objSheet->setTitle('demo');//设置当前sheet的标题

        //设置第一栏的标题
        $objSheet->setCellValue('A1', '订单编号')
            ->setCellValue('B1', '公司名称')
            ->setCellValue('C1', '订单号')
            ->setCellValue('D1', '金额')
            ->setCellValue('E1', '付款时间')
            ->setCellValue('F1', '平台订单号');
        //第二行起,每一行的值
        foreach ($orderList as $k => $val) {
            $k = $k+2;
            $objSheet->setCellValue('A'.$k, $val['order_id'])
                ->setCellValue('B'.$k, $val['company'])
                ->setCellValue('C'.$k, $val['out_trade_no'].' ')
                ->setCellValue('D'.$k, $val['total_fee'])
                ->setCellValue('E'.$k, date('Y-m-d H:i:s', $val['time_end']))
                ->setCellValue('F'.$k, $val['transaction_id']);
        }


        //xls为Excel5,xlsx为Excel2007。要输出什么格式就设置什么。
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('php://output');
        //通过php保存在本地的时候需要用到
        //$objWriter->save($dir.'/demo.xlsx');

        /**
         * 设置输出的为excel03还是07,需要对应上面的PHPExcel_IOFactory::createWriter()进行使用
         */
        //header('Content-Type: application/vnd.ms-excel');
        //excel2007格式(即xlsx),03或07只能选择一种。
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        //设置输出xls/xlsx的名称。
        header("Content-Disposition: attachment;filename="."order-".date('Y-m-d').".xlsx");
        header('Cache-Control: max-age=0');//禁止缓存

        /**
         * 以下为需要用到IE时候的设置
         */
        // If you're serving to IE 9, then the following may be needed
        //header('Cache-Control: max-age=1');
        // If you're serving to IE over SSL, then the following may be needed
        //header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        //header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
        //header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        //header('Pragma: public'); // HTTP/1.0
        exit;
    }
}

 

 

————这里说明一下:

    $k = $k+2,因为数组角标是0开始的,而我foreach的数据需要从第2行开始。

    $val['out_trade_no']后面加上.' ',是因为输出在excel的时候,后四位会变成0000,所以加了个空格就变成字符串了。

 

这里,我需要提一下,为什么刚开始的时候我一直不成功,原因有两个:

1、只引入了use PHPExcel; 未引入use \PHPExdcel_IOFactory;看了日志才恍然大悟。所以需要多看日志啊。

2、引入use \PHPExdcel_IOFactory;demo成功了,但是项目不成功。是因为我一直放在了User、Order等控制器下,而这些控制器都是继承了Common控制器的,有初始化函数,所以一直无法执行。直到我把继承Common改成了Controller,成功了,然后才发现了的。

 

 

 

 

————占位符

 

转载于:https://www.cnblogs.com/windyet/articles/7682972.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值