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

来源:互联网 发布:mac os 删除照片 编辑:程序博客网 时间:2024/04/30 01:10

从数据库导出数据到表格: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 0
原创粉丝点击