入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-02-23 投稿人: 浏览次数:1746

从数据库导出数据到表格: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男,2女
        if(!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");                                 //禁止缓存
    }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。