zoukankan      html  css  js  c++  java
  • PHP导出Excel表格实例

    /**
         * 处理表单导出成表格
         */
        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 的导出方式

    工作只为生活,学习才是主流!
  • 相关阅读:
    (转载) 随机数原理
    ZOJ 2588 Burning Bridges(求桥的数量,邻接表)
    生成不重复的随机数对(C/C++)
    比较两个文件是否相同(C/C++语言)
    计算文件大小(C/C++语言)
    (转载)Nim游戏博弈(收集完全版)
    将一串字符串全排列输出(回溯法)
    Linux中使用Crontab定时监测维护Tomcat应用程序的方法
    Nginx单向认证的安装配置
    非关系型数据库 2017-02-12 22:27 189人阅读 评论(2) 收藏
  • 原文地址:https://www.cnblogs.com/marco123/p/10244546.html
Copyright © 2011-2022 走看看