PHP导出excel

小编 1     473      无分类   1     0
PHP导出excel

图片.png

导出方法:

    //导出
    private function export(&$data, $title) {
        $filename = $title.'.csv';
        header("Content-type:text/csv");
        header("Content-Disposition:attachment;filename=".$filename);
        header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
        header('Expires:0');
        header('Pragma:public');
        $columns = "资金项目名称,发放类型,主管单位,受益人次,发放总金额,更新日期\n";
        $reportDatas = iconv('UTF-8', 'gb2312//IGNORE',$columns);
        if(count($data) > 0){
            foreach ($data as $val){
                $reportDatas .=  iconv('UTF-8', 'gb2312//IGNORE', $val['subject']) . ',';
                $reportDatas .=  iconv('UTF-8', 'gb2312//IGNORE', $val['category_name']) . ',';
                $reportDatas .=  iconv('UTF-8', 'gb2312//IGNORE', $val['department_name']) . ',';
                $reportDatas .=  iconv('UTF-8', 'gb2312//IGNORE', $val['benefit_num']) . ',';
                $reportDatas .=  iconv('UTF-8', 'gb2312//IGNORE', $val['benefit_amount']) . ',';
                $reportDatas .=  iconv('UTF-8', 'gb2312//IGNORE', $val['updatedDateTime']) . "\n";
            }
        }
        echo $reportDatas;
    }

业务逻辑:

    protected function actionFinder() {
        $where = 'c.status=1 and c.recycle=0';
        $queryAll = false;
        if($this->_context->category_id > 0){
            $where .= ' and c.category_id=' . $this->_context->category_id;
        }
        if(!($this->_context->year > 0)){
            $title = $this->_context->year . '年资金项目查询结果';
            $queryAll = true;
        } else {
            $title = '资金项目查询结果';
        }
        if(strlen($this->_context->subject) > 0){
            $where .= ' and c.subject="' . $this->_context->subject . '"';
        }
        $page = intval($this->_context->page) > 0 ? intval($this->_context->page) : 1;
        $limit = intval($this->_context->rows) > 0 ? intval($this->_context->rows) : ($this->_page_rows ? $this->_page_rows : 15);
    
        // 排序
        $sort = isset($this->_context->sort) ? $this->_context->sort : '';
        $order = isset($this->_context->order) ? $this->_context->order : '';
        if (strlen($sort) > 0 && strlen($order) > 0) {
            $orderWay = $sort . ' ' . $order;
        }

        // 查询记录
        if ($this->_finder == 'datagrid') {
            $items= 'c.subject,c.category_id,c.department_id,c.updated,sum(r.money) as benefit_amount,count(r.id)' . 
            ' as benefit_num';
            if(!$queryAll){
                $sql = 'select ' . $items . ' from ' . $this->_dbPrefix . 'capital as c left join ' . $this->_dbPrefix . 
                'receive as r' . ' on r.apply_id in (select id from ' . $this->_dbPrefix . 'apply as a where a.capital_id=c.id and' .
                ' a.year=' . $this->_context->year . ')' . ' where ' . $where . ' group by c.id limit ' . (($page-1) * $limit) .
                ',' . $limit;
            } else {
                $sql = 'select ' . $items . ' from ' . $this->_dbPrefix . 'capital as c left join ' . $this->_dbPrefix . 
                'receive as r' . ' on r.capital_id=c.id ' .  ' where ' . $where . ' group by c.id limit '. (($page-1) * $limit) 
                . ',' . $limit;
            }
            $datebase = QDB::getConn();
            $results = $datebase->execute($sql);
            $capitals = $results->fetchAll();
            $categorys = Category::cache();
            $departments = Department::cache();
            foreach($capitals as &$val){
                $val['benefit_num'] = $val['benefit_num'] > 0 ? $val['benefit_num'] : 0;
                $val['department_name'] = isset($departments[$val['department_id']]['name']) ? $departments[$val['department_id']]['name'] : '';
                $val['category_name'] = isset($categorys[$val['category_id']]['name']) ? $categorys[$val['category_id']]['name'] : '';
                $val['updatedDateTime'] = date(Q::ini('app_settings/datetime_format/value'), $val['updated']);
            }
            $total = Capital::find()->getCount('id');
            $datebase->close();
            $rtn = array(
                    'total' => $total,
                    'rows' => $capitals
            );
        }
        if($this->_context->down != 1){
            echo json_encode($rtn);
        } else {
            $this->export($capitals, $title);
        }
        exit();
    }

根据自己的情况增减代码


完结

单行、唯一  
1楼
[耶]
captcha
忘记密码? 注册
第三方登录
微信赞赏
支付宝赞赏