You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
497
hyhproject/admin/model/Reports.php
Executable file
497
hyhproject/admin/model/Reports.php
Executable file
@ -0,0 +1,497 @@
|
||||
<?php
|
||||
namespace wstmart\admin\model;
|
||||
use think\Db;
|
||||
use think\Loader;
|
||||
/**
|
||||
* ============================================================================
|
||||
* 报表业务处理
|
||||
*/
|
||||
class Reports extends Base{
|
||||
/**
|
||||
* 获取商品销售统计
|
||||
*/
|
||||
public function topSaleGoodsByPage(){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$startTime = strtotime(input('startDate'));
|
||||
$endTime =strtotime(input('endDate'));
|
||||
$goodsCatIdPath = input('goodsCatIdPath');
|
||||
$shopName = input('post.shopName');
|
||||
$goodsName = input('post.goodsName');
|
||||
$where='(payType=0 or (payType=1 and isPay=1)) and o.dataFlag=1';
|
||||
if($shopName)$where.=' AND shopName like "%'.$shopName.'%"';
|
||||
if($goodsName)$where.=' AND g.goodsName like "%'.$goodsName.'%"';
|
||||
if($goodsCatIdPath !='')$where.=' AND g.goodsCatIdPath like "%'.$goodsCatIdPath.'%"';
|
||||
$rs= Db::field('og.goodsId,g.goodsName,goodsSn,s.shopId,shopName,sum(og.goodsNum) goodsNum,og.goodsImg,count(og.goodsId)orderNum,pageNum,goodsCatIdPath')
|
||||
->name('order_goods')->alias('og')
|
||||
->join('(select p.*,count(p.goodsId) pageNum from __PAGE_VIEW__ p group by p.goodsId ) con','con.goodsId=og.goodsId','left')
|
||||
->join('__ORDERS__ o','og.orderId=o.orderId','left')
|
||||
->join('__GOODS__ g','og.goodsId=g.goodsId','left')
|
||||
->join('__SHOPS__ s','g.shopId=s.shopId','left')
|
||||
->order('goodsNum desc')
|
||||
->whereTime('o.createTime','between',[$start,$end])
|
||||
->where($where)
|
||||
->group('og.goodsId,g.goodsName,goodsSn,s.shopId,shopName,og.goodsImg')
|
||||
->paginate(input('limit/d'))->toArray();
|
||||
return $rs;
|
||||
}
|
||||
/**
|
||||
* 获取店铺销售统计
|
||||
*/
|
||||
public function topShopSalesByPage(){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$shopName = input('shopName');
|
||||
$where='(payType=0 or (payType=1 and isPay=1)) and o.dataFlag=1';
|
||||
if($shopName)$where.=' AND shopName like "%'.$shopName.'%"';
|
||||
$rs = Db::field('s.shopId,s.shopImg,s.shopName,sum(o.totalMoney) totalMoney,count(o.shopId) orderNum,s.userId')
|
||||
->name('shops')->alias('s')
|
||||
->join('__ORDERS__ o','s.shopId=o.shopId')
|
||||
->order('totalMoney desc,orderNum desc')
|
||||
->whereTime('o.createTime','between',[$start,$end])
|
||||
->where($where)
|
||||
->group('o.shopId')
|
||||
->paginate(input('limit/d'))->toArray();
|
||||
foreach($rs['Rows'] as $k=>$v){
|
||||
$onLineArr = Db::name('orders')
|
||||
->whereTime('createTime','between',[$start,$end])
|
||||
->field('sum(totalMoney) totalMoney,sum(realTotalMoney) realTotalMoney')
|
||||
->where('payType=1 and isPay=1 and dataFlag=1 and orderStatus=2')
|
||||
->where(['shopId'=>$v['shopId']])
|
||||
->find();
|
||||
$rs['Rows'][$k]['onLinePayMoney'] = (float)$onLineArr['totalMoney'];// 在线支付总金额
|
||||
$rs['Rows'][$k]['onLinePayTrueMoney'] = (float)$onLineArr['realTotalMoney'];// 在线支付实际金额
|
||||
$rs['Rows'][$k]['offLinePayMoney'] = (float)Db::name('orders')
|
||||
->whereTime('createTime','between',[$start,$end])
|
||||
->where('payType=0 and dataFlag=1 and orderStatus=2')
|
||||
->where(['shopId'=>$v['shopId']])
|
||||
->value('sum(totalMoney)');;// 货到付款金额
|
||||
$rs['Rows'][$k]['ectNum']=db('user_ect_log')->where(['userId'=>$v['userId'],'ectType'=>12])->value('sum(ectNum)ectNum');
|
||||
}
|
||||
return $rs;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取销售额
|
||||
*/
|
||||
public function statSales(){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$payType = (int)input('payType',-1);
|
||||
$rs = Db::field('left(createTime,10) createTime,orderSrc,sum(totalMoney) totalMoney')->name('orders')->whereTime('createTime','between',[$start,$end])
|
||||
->where('((payType=0 or (payType=1 and isPay=1)) and dataFlag=1) '.(in_array($payType,[0,1])?" and payType=".$payType:''))
|
||||
->order('createTime asc')
|
||||
->group('left(createTime,10),orderSrc')->select();
|
||||
$rdata = [];
|
||||
if(count($rs)>0){
|
||||
$days = [];
|
||||
$payTypes = [0,1,2,3,4];
|
||||
$tmp = [];
|
||||
foreach($rs as $key => $v){
|
||||
if(!in_array($v['createTime'],$days))$days[] = $v['createTime'];
|
||||
$tmp[$v['orderSrc']."_".$v['createTime']] = $v['totalMoney'];
|
||||
}
|
||||
$rdata['map'] = ['p0'=>0,'p1'=>0,'p2'=>0,'p3'=>0,'p4'=>0];
|
||||
foreach($days as $v){
|
||||
$total = 0;
|
||||
foreach($payTypes as $p){
|
||||
$pv = isset($tmp[$p."_".$v])?$tmp[$p."_".$v]:0;
|
||||
$rdata['p'.$p][] = (float)$pv;
|
||||
$total = $total + (float)$pv;
|
||||
$rdata['map']['p'.$p] = $rdata['map']['p'.$p] + (float)$pv;
|
||||
}
|
||||
$rdata['total'][] = $total;
|
||||
}
|
||||
$rdata['days'] = $days;
|
||||
}
|
||||
return WSTReturn('',1,$rdata);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单统计
|
||||
*/
|
||||
public function statOrders(){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$payType = (int)input('payType',-1);
|
||||
$rs = Db::field('left(createTime,10) createTime,orderSrc,count(orderId) orderNum')->name('orders')->whereTime('createTime','between',[$start,$end])
|
||||
->where('((payType=0 or (payType=1 and isPay=1)) and dataFlag=1) '.(in_array($payType,[0,1])?" and payType=".$payType:''))
|
||||
->order('createTime asc')
|
||||
->group('left(createTime,10),orderSrc')->select();
|
||||
$rdata = [];
|
||||
if(count($rs)>0){
|
||||
$days = [];
|
||||
$payTypes = [0,1,2,3,4];
|
||||
$tmp = [];
|
||||
foreach($rs as $key => $v){
|
||||
if(!in_array($v['createTime'],$days))$days[] = $v['createTime'];
|
||||
$tmp[$v['orderSrc']."_".$v['createTime']] = $v['orderNum'];
|
||||
}
|
||||
$rdata['map'] = ['p0'=>0,'p1'=>0,'p2'=>0,'p3'=>0,'p4'=>0];
|
||||
foreach($days as $v){
|
||||
$total = 0;
|
||||
foreach($payTypes as $p){
|
||||
$pv = isset($tmp[$p."_".$v])?$tmp[$p."_".$v]:0;
|
||||
$rdata['p'.$p][] = (float)$pv;
|
||||
$total = $total + (float)$pv;
|
||||
$rdata['map']['p'.$p] = $rdata['map']['p'.$p] + (float)$pv;
|
||||
}
|
||||
$rdata['total'][] = $total;
|
||||
}
|
||||
$rdata['days'] = $days;
|
||||
}
|
||||
return WSTReturn('',1,$rdata);
|
||||
}
|
||||
/*首页获取订单数量*/
|
||||
public function getOrders(){
|
||||
$data = cache('orderData');
|
||||
if(empty($data)){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$payType = -1;
|
||||
$rs = Db::field('left(createTime,10) createTime,orderSrc,count(orderId) orderNum')->name('orders')->whereTime('createTime','between',[$start,$end])
|
||||
->where('((payType=0 or (payType=1 and isPay=1)) and dataFlag=1) '.(in_array($payType,[0,1])?" and payType=".$payType:''))
|
||||
->order('createTime asc')
|
||||
->group('left(createTime,10),orderSrc')->select();
|
||||
$rdata = [];
|
||||
if(count($rs)>0){
|
||||
$days = [];
|
||||
$tmp = [];
|
||||
$payTypes = [0,1,2,3,4];
|
||||
foreach($rs as $key => $v){
|
||||
if(!in_array($v['createTime'],$days))$days[] = $v['createTime'];
|
||||
$tmp[$v['orderSrc']."_".$v['createTime']] = $v['orderNum'];
|
||||
}
|
||||
foreach($days as $v){
|
||||
$total = 0;
|
||||
foreach($payTypes as $p){
|
||||
$pv = isset($tmp[$p."_".$v])?$tmp[$p."_".$v]:0;
|
||||
$total = $total + (float)$pv;
|
||||
}
|
||||
$rdata['total'][] = $total;
|
||||
}
|
||||
$rdata['days'] = $days;
|
||||
cache('orderData',$rdata,7200);
|
||||
}
|
||||
}else{
|
||||
$rdata = cache('orderData');
|
||||
}
|
||||
return WSTReturn('',1,$rdata);
|
||||
}
|
||||
/**
|
||||
* 获取新增用户
|
||||
*/
|
||||
public function statNewUser(){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$urs = Db::field('left(createTime,10) createTime,count(userId) userNum')
|
||||
->name('users')
|
||||
->whereTime('createTime','between',[$start,$end])
|
||||
->where(['dataFlag'=>1,'userType'=>0])
|
||||
->order('createTime asc')
|
||||
->group('left(createTime,10)')
|
||||
->select();
|
||||
$srs = Db::field('left(createTime,10) createTime,count(shopId) userNum')
|
||||
->name('shops')
|
||||
->whereTime('createTime','between',[$start,$end])
|
||||
->where(['dataFlag'=>1])
|
||||
->order('createTime asc')
|
||||
->group('left(createTime,10)')
|
||||
->select();
|
||||
$rdata = [];
|
||||
$days = [];
|
||||
$tmp = [];
|
||||
if(count($urs)>0){
|
||||
foreach($urs as $key => $v){
|
||||
if(!in_array($v['createTime'],$days))$days[] = $v['createTime'];
|
||||
$tmp["0_".$v['createTime']] = $v['userNum'];
|
||||
}
|
||||
}
|
||||
if(count($srs)>0){
|
||||
foreach($srs as $key => $v){
|
||||
if(!in_array($v['createTime'],$days))$days[] = $v['createTime'];
|
||||
$tmp["1_".$v['createTime']] = $v['userNum'];
|
||||
}
|
||||
}
|
||||
sort($days);
|
||||
foreach($days as $v){
|
||||
$rdata['u0'][] = isset($tmp['0_'.$v])?$tmp['0_'.$v]:0;
|
||||
$rdata['u1'][] = isset($tmp['1_'.$v])?$tmp['1_'.$v]:0;
|
||||
}
|
||||
$rdata['days'] = $days;
|
||||
return WSTReturn('',1,$rdata);
|
||||
}
|
||||
/**
|
||||
* 会员登录统计
|
||||
*/
|
||||
public function statUserLogin(){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$prefix = config('database.prefix');
|
||||
$sql ='select createTime,userType,count(userId) userNum from (
|
||||
SELECT left(loginTime,10) createTime,`userType`,u.userId
|
||||
FROM `'.$prefix.'users` `u` INNER JOIN `'.$prefix.'log_user_logins` `lg` ON `u`.`userId`=`lg`.`userId`
|
||||
WHERE `loginTime` BETWEEN "'.$start.'" AND "'.$end.'" AND ( dataFlag=1 )
|
||||
GROUP BY left(loginTime,10),userType,lg.userId
|
||||
) a GROUP BY createTime, userType ORDER BY createTime asc ';
|
||||
$rs = Db::query($sql);
|
||||
$rdata = [];
|
||||
if(count($rs)>0){
|
||||
$days = [];
|
||||
$tmp = [];
|
||||
foreach($rs as $key => $v){
|
||||
if(!in_array($v['createTime'],$days))$days[] = $v['createTime'];
|
||||
$tmp[$v['userType']."_".$v['createTime']] = $v['userNum'];
|
||||
}
|
||||
foreach($days as $v){
|
||||
$rdata['u0'][] = isset($tmp['0_'.$v])?$tmp['0_'.$v]:0;
|
||||
$rdata['u1'][] = isset($tmp['1_'.$v])?$tmp['1_'.$v]:0;
|
||||
}
|
||||
$rdata['days'] = $days;
|
||||
}
|
||||
return WSTReturn('',1,$rdata);
|
||||
}
|
||||
/**
|
||||
* 导出商品销售订单
|
||||
*/
|
||||
public function toExportGoods(){
|
||||
$name='商品销售统计表';
|
||||
$start = input('startDate');
|
||||
$end = input('endDate');
|
||||
$where=[];
|
||||
$shopName = input('shopName');
|
||||
$goodsName = input('goodsName');
|
||||
$goodsCatIdPath = input('goodsCatIdPath');
|
||||
if($goodsCatIdPath !='')$where['g.goodsCatIdPath'] = ['like','%'.$goodsCatIdPath.'%'];
|
||||
if($shopName!='')$where['shopName'] = ['like','%'.$shopName.'%'];
|
||||
if($goodsName!='')$where['g.goodsName'] = ['like','%'.$goodsName.'%'];
|
||||
if($start!='' && $end!=''){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$where['o.createTime'] = ['between',[$start.' 00:00:00',$end.' 23:59:59']];
|
||||
}else if($start!=''){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$where['o.createTime'] = ['>=',$start.' 00:00:00'];
|
||||
}else if($end!=''){
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$where['o.createTime'] = ['<=',$end.' 23:59:59'];
|
||||
}
|
||||
$page=Db::field('og.goodsId,g.goodsName,goodsSn,s.shopId,shopName,sum(og.goodsNum) goodsNum,og.goodsImg,count(og.goodsId)orderNum,pageNum')
|
||||
->name('order_goods')->alias('og')
|
||||
->join('(select p.*,count(p.goodsId) pageNum from __PAGE_VIEW__ p group by p.goodsId ) con','con.goodsId=og.goodsId','left')
|
||||
->join('__ORDERS__ o','og.orderId=o.orderId','left')
|
||||
->join('__GOODS__ g','og.goodsId=g.goodsId','left')
|
||||
->join('__SHOPS__ s','g.shopId=s.shopId','left')
|
||||
->order('goodsNum desc')
|
||||
->where($where)
|
||||
->where('(payType=0 or (payType=1 and isPay=1)) and o.dataFlag=1')
|
||||
->group('og.goodsId,g.goodsName,goodsSn,s.shopId,shopName,og.goodsImg')
|
||||
->select();
|
||||
Loader::import('phpexcel.PHPExcel.IOFactory');
|
||||
$objPHPExcel = new \PHPExcel();
|
||||
// 设置excel文档的属性
|
||||
$objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
|
||||
->setLastModifiedBy("heyuanhui")//最后修改人
|
||||
->setTitle($name)//标题
|
||||
->setSubject($name)//题目
|
||||
->setDescription($name)//描述
|
||||
->setKeywords("订单")//关键字
|
||||
->setCategory("Test result file");//种类
|
||||
|
||||
// 开始操作excel表
|
||||
$objPHPExcel->setActiveSheetIndex(0);
|
||||
// 设置工作薄名称
|
||||
$objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
|
||||
// 设置默认字体和大小
|
||||
$objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
|
||||
$objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
|
||||
$styleArray = array(
|
||||
'font' => array(
|
||||
'bold' => true,
|
||||
'color'=>array(
|
||||
'argb' => 'ffffffff',
|
||||
)
|
||||
),
|
||||
'borders' => array (
|
||||
'outline' => array (
|
||||
'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式
|
||||
'color' => array ('argb' => 'FF000000'), //设置border颜色
|
||||
)
|
||||
)
|
||||
);
|
||||
//设置宽
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getStyle('A1:H1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
|
||||
$objPHPExcel->getActiveSheet()->getStyle('A1:H1')->getFill()->getStartColor()->setARGB('333399');
|
||||
|
||||
$objPHPExcel->getActiveSheet()
|
||||
->setCellValue('A1', '商品ID')
|
||||
->setCellValue('B1', '商品编号')
|
||||
->setCellValue('C1', '商品名称')
|
||||
->setCellValue('D1', '商品销量')
|
||||
->setCellValue('E1', '所属店铺')
|
||||
->setCellValue('F1', '订单总数')
|
||||
->setCellValue('G1', '浏览总数');
|
||||
$objPHPExcel->getActiveSheet()->getStyle('A1:G1')->applyFromArray($styleArray);
|
||||
|
||||
for ($row = 0; $row < count($page); $row++){
|
||||
$i = $row+2;
|
||||
$objPHPExcel->getActiveSheet()
|
||||
->setCellValue('A'.$i, $page[$row]['goodsId'])
|
||||
->setCellValue('B'.$i, chunk_split($page[$row]['goodsSn']))
|
||||
->setCellValue('C'.$i, $page[$row]['goodsName'])
|
||||
->setCellValue('D'.$i, $page[$row]['goodsNum'])
|
||||
->setCellValue('E'.$i, $page[$row]['shopName'])
|
||||
->setCellValue('F'.$i, $page[$row]['orderNum'])
|
||||
->setCellValue('G'.$i, $page[$row]['pageNum']);
|
||||
|
||||
}
|
||||
//输出EXCEL格式
|
||||
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
||||
// 从浏览器直接输出$filename
|
||||
header('Content-Type:application/csv;charset=UTF-8');
|
||||
header("Pragma: public");
|
||||
header("Expires: 0");
|
||||
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
|
||||
header("Content-Type:application/force-download");
|
||||
header("Content-Type:application/vnd.ms-excel;");
|
||||
header("Content-Type:application/octet-stream");
|
||||
header("Content-Type:application/download");
|
||||
header('Content-Disposition: attachment;filename="'.$name.'.xls"');
|
||||
header("Content-Transfer-Encoding:binary");
|
||||
$objWriter->save('php://output');
|
||||
}
|
||||
/**
|
||||
* 导出商品销售订单
|
||||
*/
|
||||
public function toExportShop(){
|
||||
$name='店铺销售统计表';
|
||||
$start = input('startDate');
|
||||
$end = input('endDate');
|
||||
$shopName = input('shopName');
|
||||
$wh='(payType=0 or (payType=1 and isPay=1)) and o.dataFlag=1';
|
||||
if($shopName)$wh.=' AND shopName like "%'.$shopName.'%"';
|
||||
$where=[];
|
||||
if($start!='' && $end!=''){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$where['o.createTime'] = ['between',[$start.' 00:00:00',$end.' 23:59:59']];
|
||||
}else if($start!=''){
|
||||
$start = date('Y-m-d 00:00:00',strtotime(input('startDate')));
|
||||
$where['o.createTime'] = ['>=',$start.' 00:00:00'];
|
||||
}else if($end!=''){
|
||||
$end = date('Y-m-d 23:59:59',strtotime(input('endDate')));
|
||||
$where['o.createTime'] = ['<=',$end.' 23:59:59'];
|
||||
}
|
||||
$page=Db::field('s.shopId,s.shopImg,s.shopName,sum(o.totalMoney) totalMoney,count(o.orderId) orderNum')
|
||||
->name('shops')->alias('s')
|
||||
->join('__ORDERS__ o','s.shopId=o.shopId')
|
||||
->order('totalMoney desc,orderNum desc')
|
||||
->where($where)
|
||||
->where($wh)
|
||||
->group('o.shopId')
|
||||
->select();
|
||||
|
||||
foreach($page as $k=>$v){
|
||||
$onLineArr = Db::name('orders')->alias('o')
|
||||
->where($where)
|
||||
->field('sum(totalMoney) totalMoney,sum(realTotalMoney) realTotalMoney')
|
||||
->where('payType=1 and isPay=1 and dataFlag=1 and orderStatus=2')
|
||||
->where(['shopId'=>$v['shopId']])
|
||||
->find();
|
||||
$page[$k]['onLinePayMoney'] = (float)$onLineArr['totalMoney'];// 在线支付总金额
|
||||
$page[$k]['onLinePayTrueMoney'] = (float)$onLineArr['realTotalMoney'];// 在线支付实际金额
|
||||
$page[$k]['offLinePayMoney'] = (float)Db::name('orders')->alias('o')
|
||||
->where($where)
|
||||
->where('payType=0 and dataFlag=1 and orderStatus=2')
|
||||
->where(['shopId'=>$v['shopId']])
|
||||
->value('sum(totalMoney)');;// 货到付款金额
|
||||
}
|
||||
Loader::import('phpexcel.PHPExcel.IOFactory');
|
||||
$objPHPExcel = new \PHPExcel();
|
||||
// 设置excel文档的属性
|
||||
$objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人
|
||||
->setLastModifiedBy("heyuanhui")//最后修改人
|
||||
->setTitle($name)//标题
|
||||
->setSubject($name)//题目
|
||||
->setDescription($name)//描述
|
||||
->setKeywords("订单")//关键字
|
||||
->setCategory("Test result file");//种类
|
||||
|
||||
// 开始操作excel表
|
||||
$objPHPExcel->setActiveSheetIndex(0);
|
||||
// 设置工作薄名称
|
||||
$objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet'));
|
||||
// 设置默认字体和大小
|
||||
$objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', ''));
|
||||
$objPHPExcel->getDefaultStyle()->getFont()->setSize(11);
|
||||
$styleArray = array(
|
||||
'font' => array(
|
||||
'bold' => true,
|
||||
'color'=>array(
|
||||
'argb' => 'ffffffff',
|
||||
)
|
||||
),
|
||||
'borders' => array (
|
||||
'outline' => array (
|
||||
'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式
|
||||
'color' => array ('argb' => 'FF000000'), //设置border颜色
|
||||
)
|
||||
)
|
||||
);
|
||||
//设置宽
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(25);
|
||||
$objPHPExcel->getActiveSheet()->getStyle('A1:H1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
|
||||
$objPHPExcel->getActiveSheet()->getStyle('A1:H1')->getFill()->getStartColor()->setARGB('333399');
|
||||
|
||||
$objPHPExcel->getActiveSheet()
|
||||
->setCellValue('A1', '店铺名称')
|
||||
->setCellValue('B1', '订单总金额')
|
||||
->setCellValue('C1', '订单总数')
|
||||
->setCellValue('D1', '在线支付总金额')
|
||||
->setCellValue('E1', '在线支付实际金额')
|
||||
->setCellValue('F1', '货到付款金额');
|
||||
$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->applyFromArray($styleArray);
|
||||
|
||||
for ($row = 0; $row < count($page); $row++){
|
||||
$i = $row+2;
|
||||
$objPHPExcel->getActiveSheet()
|
||||
->setCellValue('A'.$i, $page[$row]['shopName'])
|
||||
->setCellValue('B'.$i, $page[$row]['totalMoney'])
|
||||
->setCellValue('C'.$i, $page[$row]['orderNum'])
|
||||
->setCellValue('D'.$i, $page[$row]['onLinePayMoney'])
|
||||
->setCellValue('E'.$i, $page[$row]['onLinePayTrueMoney'])
|
||||
->setCellValue('F'.$i, $page[$row]['offLinePayMoney']);
|
||||
|
||||
}
|
||||
//输出EXCEL格式
|
||||
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
||||
// 从浏览器直接输出$filename
|
||||
header('Content-Type:application/csv;charset=UTF-8');
|
||||
header("Pragma: public");
|
||||
header("Expires: 0");
|
||||
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
|
||||
header("Content-Type:application/force-download");
|
||||
header("Content-Type:application/vnd.ms-excel;");
|
||||
header("Content-Type:application/octet-stream");
|
||||
header("Content-Type:application/download");
|
||||
header('Content-Disposition: attachment;filename="'.$name.'.xls"');
|
||||
header("Content-Transfer-Encoding:binary");
|
||||
$objWriter->save('php://output');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user