marco123
/**
     * 处理表单导出成表格
     */
    public function excel_handle($a = 2)
    {
        require_once \'vendor/PHPExcel/PHPExcel.php\';
        $PHPExcel = new \PHPExcel(); //实例化PHPExcel类,类似于在桌面上新建一个Excel表格
        $PHPSheet = $PHPExcel->getActiveSheet(); //获得当前活动sheet的操作对象
        $PHPSheet->setTitle(\'处理表\'); //给当前活动sheet设置名称
        //表头
        //给当前活动sheet填充数据,数据填充是按顺序一行一行填充的,假如想给A1留空,可以直接setCellValue(‘A1’,’’);
        $PHPSheet->setCellValue(\'A1\', \'ID\')
            ->setCellValue(\'B1\', \'姓名\')
            ->setCellValue(\'C1\', \'手机号\')
            ->setCellValue(\'D1\', \'业务需求\')
            ->setCellValue(\'E1\', \'处理人姓名\')
            ->setCellValue(\'F1\', \'创建时间\')
            ->setCellValue(\'G1\', \'是否处理\')
        ;
        $order = D(\'Site/Handle\')
            ->alias(\'h\')
            ->join(\'LEFT JOIN ly_site_category AS c ON FIND_IN_SET(c.id,h.cid)\')
            ->join(\'LEFT JOIN ly_admin_user AS u ON u.id = h.uid\')
            ->group(\'h.id\')
            ->field(\'h.id,h.username,h.mobile,group_concat(distinct c.title SEPARATOR " | ") as c_title,u.username as uusername, h.create_time as create_time,is_handle\')
            ->select();
        $list = array(
            \'0\'  => \'待处理\',
            \'1\'  => \'已处理\',
        );
        foreach ($order as $k1 => $v1) {
            $cell = $k1 + 2;
            if ($v1[\'is_handle\']){
                $v1[\'is_handle\'] = \'已处理\';
            } else {
                $v1[\'is_handle\'] = \'待处理\';
            }
            $PHPSheet->setCellValue(\'A\' . $cell, $v1[\'id\'])
                ->setCellValue(\'B\' . $cell, $v1[\'username\'])
                ->setCellValue(\'C\' . $cell, $v1[\'mobile\'])
                ->setCellValue(\'D\' . $cell, $v1[\'c_title\'])
                ->setCellValue(\'E\' . $cell, $v1[\'uusername\'])
                ->setCellValue(\'F\' . $cell, date(\'Y-m-d H:i:s\', $v1[\'create_time\']))
                ->setCellValue(\'G\' . $cell, $v1[\'is_handle\'])
            ;
        }

        switch ($a) {
            case \'1\':
                $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, \'Excel2007\'); //按照指定格式生成Excel文件,‘Excel2007’表示生成2007版本的xlsx,
                $PHPWriter->save(\'handle.xlsx\'); //表示在$path路径下面生成demo.xlsx文件
                break;
            case \'2\':
                // 生成2007excel格式的xlsx文件

                $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, \'Excel5\'); //按照指定格式生成Excel文件,‘Excel2007’表示生成2007版本的xlsx
                header(\'Content-Type: text/html;charset=utf-8\');
                header(\'Content-Type: xlsx\');
                header(\'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\');
                header(\'Content-Disposition: attachment;filename="handle.xls"\');
                header(\'Cache-Control: max-age=0\');
                $PHPWriter->save("php://output");
                break;
        }
    }

推荐使用 $a = 2 的导出方式

分类:

技术点:

相关文章: