PHP----从数据库导出数据到表格:PHPExcel

从数据库导出数据到表格:PHPExcel

调用:按天数导出

 if(isset($_GET['post']) && !empty($_GET['post']) && is_numeric($_GET['post'])){
            $day = TIME - (3600*24 * $_GET['post']);
        } else {
            Response::show(0, '导入操作失败');
        }

       self::Db2Eexcel($day);
}

封装:数据库导出数据到表格

/**
  * 封装:信息导出
  * @param $day
  * @param string $tableName
  * @throws PHPExcel_Exception
  * @throws PHPExcel_Reader_Exception
  */
public function Db2Eexcel($day, $tableName = "用户注册信息"){
    require_once 'PHPExcel/PHPExcel.php';

    // 1. 实例化工作簿
    $excel = new PHPExcel();

    // 2. 得到前当活动工作表
    $sheet = $excel->getActiveSheet();

    // 3. Excel表格式,这里简略写了14$letter = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N');
    // 3.1 表头数组
    $tableheader = array('UID','姓名','性别','电话','Email','QQ','层次','专业','页面类型','提交页面','所在地区','IP','提交时间','备注');
    // 3.2 填充表头信息, 并设置样式
    for($i = 0;$i < count($tableheader);$i++) {
        $sheet->getCell("$letter[$i]1")->setValue("$tableheader[$i]");

        $sheet->getStyle("$letter[$i]1")->getAlignment()->setHorizontal('center');    // 统一设置水平居中
        $sheet->getStyle("$letter[$i]1")->getAlignment()->setVertical('center');      // 统一设置垂直居中
        $sheet->getStyle("$letter[$i]1")->getFont()->getColor()->setRGB('b5211a');    // 统一设置单元格字段颜色
        $sheet->getStyle("$letter[$i]1")->getFont()->setSize(12);                     // 统一设置字体大小
        $sheet->getStyle("$letter[$i]")->getFont()->setSize(10);
        $sheet->getStyle("$letter[$i]1")->getFont()->setBold(true);                   // 统一设置加粗
        $sheet->getColumnDimension("$letter[$i]")->setWidth(20);                      // 统一设置宽度
    }

    // 3.3 样式:第1行的高度
    $sheet->getRowDimension('1')->setRowHeight(30);

    // 3.4 样式:列的宽度
    $sheet->getColumnDimension('A')->setWidth(10);
    $sheet->getColumnDimension('C')->setWidth(10);
    $sheet->getColumnDimension('J')->setWidth(70);


    // 4. 从数据库按天数查询信息
    $model = ModelFactory::M('RegisterFormModel');
    $data = $model->getAllFormByDay($day);

    // 5. 填充表格信息
    for ($i = 2, $k = 0; $i<=count($data)+1; $i++, $k++) {
        $j = 0;

        // 格式化:时间
        if(!empty($data[$k]['createTime'])){
            $data[$k]['createTime'] = date('Y-m-d H:i:s', $data[$k]['createTime']);
        }

        // 格式化:性别. 性别:1男,2if(!empty($data[$k]['sex'])){
            $data[$k]['sex'] = $data[$k]['sex'] == 1 ? '男' : '女';
        }


        foreach ($data[$i - 2] as $key=>$value) {
            $sheet->getCell("$letter[$j]$i")->setValue("$value");
            $sheet->getStyle("$letter[$j]$i")->getAlignment()->setHorizontal('center');
            $j++;
        }
    }

    // 6. 保存文件:输出到浏览器
    $writer=PHPExcel_IOFactory::createWriter($excel,'Excel2007');
    self::browser_export('Excel2007', $tableName.'.xlsx');    //输出到浏览器
    $writer->save("php://output");
}

封装:输出到浏览器

    /**
     * 输出到浏览器
     * @param $type
     * @param $filename
     */
    function browser_export($type,$filename){
        if($type=="Excel5"){
            header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出excel03文件
        }else{
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器数据excel07文件
        }
        header('Content-Disposition: attachment;filename="'.$filename.'"');//告诉浏览器将输出文件的名称
        header('Cache-Control: max-age=0');                                 //禁止缓存
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值