PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。也是我们日常开发中,经常会遇到的使用场景。比如有个客户信息表,要批量导出发给同事,我们就可以用PHPExcel来快速实现。同样,如果我们要利用短信群发接口去群发信息,PHPExcel可以快速导入客户信息,避免人工录入信息的麻烦。

 

一、首先下载PHPExcel

1.1到https://github.com/PHPOffice/PHPExcel下载PHPExcel

1.2 使用composer 安装

composer require phpoffice/phpexcel

如果不懂得使用git和composer,可以到这https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8下载压缩包

二、使用PHPExcel

直接帖代码吧 懒得码字

1.写个公共函数方便调用

/**
 * excel表格导出
 * @param string $fileName 文件名称
 * @param array $headArr 表头名称
 * @param array $data 要导出的数据
 * @throws PHPExcel_Exception
 * @throws PHPExcel_Reader_Exception
 * @throws PHPExcel_Writer_Exception
 */
function excelExport($fileName = '', $headArr = [], $data = []) {

    $fileName .= "_" . date("Y_m_d", Request::instance()->time()) . ".xls";

    $objPHPExcel = new \PHPExcel();

    $objPHPExcel->getProperties();

    $key = ord("A"); // 设置表头

    foreach ($headArr as $v) {

        $colum = chr($key);

        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);

        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);

        $key += 1;

    }

    $column = 2;

    $objActSheet = $objPHPExcel->getActiveSheet();

    foreach ($data as $key => $rows) { // 行写入

        $span = ord("A");

        foreach ($rows as $keyName => $value) { // 列写入

            $objActSheet->setCellValue(chr($span) . $column, $value);

            $span++;

        }

        $column++;

    }

    $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表

    $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表

    header('Content-Type: application/vnd.ms-excel');

    header("Content-Disposition: attachment;filename='$fileName'");

    header('Cache-Control: max-age=0');

    $objWriter =  \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

    $objWriter->save('php://output'); // 文件通过浏览器下载

    exit();

}

 

 

2.实体使用CODE

   /**
     * 下载最近一个月的订单列表
     * @throws \PHPExcel_Exception
     * @throws \PHPExcel_Reader_Exception
     * @throws \PHPExcel_Writer_Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function excel() {

        $name='支付订单表';
        //列标题
        $header=['ID','订单号','支付项目','支付Body','支付渠道','支付金额','订单状态','创建时间','修改时间'];
        //重构数据
        //获取数据源
        $data = (new PayOrder())
            ->where(['uid'=>session('user_id')])
            ->whereTime('create_time', 'month')->select();

        $newdata = [];
        foreach ($data as $k => $v){
            $newdata[$k]['id']=$v['id'];
            $newdata[$k]['out_trade_no']=$v['out_trade_no'];
            $newdata[$k]['subject']=$v['subject'];
            $newdata[$k]['body']=$v['body'];
            $newdata[$k]['channel']=$v['channel'];
            $newdata[$k]['amount']=$v['amount'];
            $newdata[$k]['status']=$v['status'] == 1 ? '待支付':'已支付';
            $newdata[$k]['create_time']=$v['create_time'];
            $newdata[$k]['update_time']=$v['update_time'];
        }

        halt($newdata);
        //公共函数
        excelExport($name,$header,$newdata);

    }