alias('c') ->join('__USERS__ u','u.userId=c.userId','left') ->join('__GOODS__ g','g.goodsId=c.goodsId','left') ->join('__SHOPS__ s','s.shopId=g.shopId','left') ->where($where) ->field('u.loginName,shopPrice,sum(cartNum)cartNum,goodsName,shopName,goodsImg,goodsCatIdPath,g.goodsId') ->order('cartNum desc') ->group('u.userId,g.goodsId') ->paginate(input('limit/d'))->toArray(); $keyCats = model('GoodsCats')->listKeyAll(); foreach ($result['Rows'] as $key => $v){ $result['Rows'][$key]['totalPrice']=$v['cartNum']*$v['shopPrice']; $result['Rows'][$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats); } return $result; } public function getGoodsCatNames($goodsCatPath, $keyCats){ $catIds = explode("_",$goodsCatPath); $catNames = array(); for($i=0,$k=count($catIds);$i<$k;$i++){ if($catIds[$i]=='')continue; if(isset($keyCats[$catIds[$i]]))$catNames[] = $keyCats[$catIds[$i]]; } return implode("→",$catNames); } //导出数据 public function toExport(){ $name='购物车数据'; $shopName=input('shopName'); $loginName=input('loginName'); $goodsName=input('goodsName'); $where = []; $where['g.goodsStatus'] = 1; $where['g.dataFlag'] = 1; $where['g.isSale'] = 1; if($shopName!="")$where['shopName']=['like',"%$shopName%"]; if($loginName!="")$where['loginName']=['like',"%$loginName%"]; if($goodsName!="")$where['goodsName']=['like',"%$goodsName%"]; $page=$this->alias('c') ->join('__USERS__ u','u.userId=c.userId','left') ->join('__GOODS__ g','g.goodsId=c.goodsId','left') ->join('__SHOPS__ s','s.shopId=g.shopId','left') ->where($where) ->field('u.loginName,shopPrice,sum(cartNum)cartNum,goodsName,shopName,goodsImg,goodsCatIdPath,g.goodsId') ->order('cartNum desc') ->group('u.userId,g.goodsId') ->select(); // dump($page); $keyCats = model('GoodsCats')->listKeyAll(); foreach ($page as $key => $v){ $page[$key]['totalPrice']=$v['cartNum']*$v['shopPrice']; $page[$key]['goodsCatName'] = self::getGoodsCatNames($v['goodsCatIdPath'],$keyCats); } 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(55); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(40); $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', '所属店铺') ->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]['loginName']) ->setCellValue('B'.$i, $page[$row]['goodsName']) ->setCellValue('C'.$i, $page[$row]['cartNum']) ->setCellValue('D'.$i, $page[$row]['shopPrice']) ->setCellValue('E'.$i, $page[$row]['totalPrice']) ->setCellValue('F'.$i, $page[$row]['shopName']) ->setCellValue('G'.$i, $page[$row]['goodsCatName']); } //输出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'); } }