PHP导出excel
PHP导出excel
导出方法:
//导出 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楼
![[耶]](http://www.wycto.cn/static/plugins/layui/images/face/53.gif)
回复