导出数据库数据成Excel

  1. 定义好导出函数:

    导出数据库数据成Excel_第1张图片导出数据库数据成Excel_第2张图片

  2. 读取数据,调用导出函数(exportExcel):

    导出数据库数据成Excel_第3张图片

  3. 附加源代码:

       

    /**
     * 载入订单
     */
    public function loadOrders() {
        $start_time = strtotime($this->_get('start')); //将开始时间转化为时间戳
        $end_time = strtotime($this->_get('end'));   //将结束时间转化为时间戳

        if ($start_time >= $end_time) {
            $this->error("开始时间必须小于或者等于结束时间!");
        }


        //获取店铺信息
        $company = M('Company')->where("`token`='{$this->token}' AND `isbranch`=0")->find();
        $cid = $company['id'];
       
        //定义时间段
        $where['time'] = array(array('gt', $start_time), array('lt', $end_time));
        $where['token'] = $this->token;
        $where['cid'] = $cid;
       
        $orders = M('product_cart')->where($where)->select();
        $headArr = array('下单日期', '下单时间', '订单号', '当前商品金额', '商品类目', '商品名称', '购买数量', '购买单价', '赠品信息', '付款状态', '配送方式', '配送时间', '客户姓名', '客户生日',  '配送校区', '配送学院及楼栋', '取货地址', '电话号码');
        $this->exportExcel($headArr, $tempOders);
        exit('不进行显示');
    }

    private function exportExcel($headArr, $data, $fileName = 'order') {
        vendor("PHPExcel.PHPExcel"); //引入PhpExcel
        $file_name = $fileName . time();
        $objPHPExcel = new PHPExcel();
        /* 以下是一些设置 ,什么作者  标题啊之类的 */
        $objPHPExcel->getProperties()->setCreator("订单数据")
                ->setLastModifiedBy("订单数据")
                ->setTitle("订单数据")
                ->setSubject("订单数据")
                ->setDescription("订单数据")
                ->setKeywords("excel")
                ->setCategory("result file");
        /* 以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改 */
        //设置表头
        $key = ord("A");
        foreach ($headArr as $v) {
            $colum = chr($key);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
            $key += 1;
        }
        //开始行写入
        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();
        $objActSheet->getColumnDimension('C')->setWidth(20);
        $objActSheet->getColumnDimension('N')->setWidth(40);
        $objActSheet->getColumnDimension('O')->setWidth(40);
        foreach ($data as $key => $rows) { //行写入
            $span = ord("A");
            foreach ($rows as $keyName => $value) {// 列写入
                $j = chr($span);
                if(strlen($value)>6){
                    $objActSheet->setCellValueExplicit($j . $column, $value, PHPExcel_Cell_DataType::TYPE_STRING); 
                }else{
                    $objActSheet->setCellValue($j . $column,  $value);
                }
                $span++;
            }
            $column++;
        }

        //重命名表
        $objPHPExcel->getActiveSheet()->setTitle($file_name);
        //设置活动单指数到第一个表,所以Excel打开这是第一个表
        $objPHPExcel->setActiveSheetIndex(0);
        //将输出重定向到一个客户端web浏览器(Excel2007)
        ob_end_clean();
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header("Content-Disposition: attachment; filename=\"$file_name\".xlsx");
        header('Cache-Control: max-age=0');
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('php://output'); //文件通过浏览器下载
    }

你可能感兴趣的:(导出数据库数据成Excel)