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)
回复