·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分✅卡密📒收藏夹👽聊天室
返回列表 发布新帖

PHPExcel 行合并、列合并、设置背景颜色实战

492 0
发表于 2023-4-22 09:04:13 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
PHPExcel 行合并、列合并、设置背景颜色实战 合并,设置,背景,背景颜色,颜色
需求:运营需要实现导出上面报表,格式为excel,方便作二次统计。
一看到这个报表当场就懵了,又是行合并,又是列合并,又是背景色。HTML页面的话,还好说。但导出报表为Excel就……唉,老板的需求,硬着头皮也要完工。

接招吧,码农:
  1. import('ORG.phpexcel.PHPExcel', '', '.php');
  2. $objPHPExcel  = new PHPExcel();
  3. $objWorksheet = $objPHPExcel->getActiveSheet();
  4. $objWorksheet->setTitle('群组数据'); //给当前sheet设置名称
  5. //设置列宽
  6. $istart = ord('A') - 65;
  7. $iend   = ord('R') - 65;
  8. for($i = $istart; $i <= $iend; $i++){
  9.     $col_width = in_array($i, [1,3,7, 8, 15, 16, 17]) ? 19 : 11;
  10.     $objWorksheet->getColumnDimension( chr(ord('A') + $i) )->setWidth($col_width);//setAutoSize(true)不起作用
  11. }
  12. $hcenter      = PHPExcel_Style_Alignment::HORIZONTAL_CENTER;//水平居中
  13. $vcenter      = PHPExcel_Style_Alignment::VERTICAL_CENTER;//上下居中
  14. //搜索条件:
  15. $objWorksheet->setCellValue('A1', '群组ID');
  16. $objWorksheet->setCellValue('B1', $search['group_id'])->getStyle('B1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('f8cbad');
  17. $objWorksheet->setCellValue('D1', '数据更新完成时间');
  18. $objWorksheet->setCellValue('E1', $search['group_time'])->getStyle('E1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('f8cbad');
  19. $objWorksheet->setCellValue('G1', '选取时间');
  20. $objWorksheet->setCellValue('H1', $search['start_time'])->getStyle('H1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('f8cbad');
  21. $objWorksheet->setCellValue('I1', $search['end_time'])->getStyle('I1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('f8cbad');
  22. $objWorksheet->setCellValue('L1', '优惠券ID');
  23. $objWorksheet->setCellValue('M1', $search['coupon_id'])->getStyle('M1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('f8cbad');
  24. //数据表头
  25. $bt     = ['群组ID', '数据更新完成时间', '总人数', '回访人数', '用券人数', '订单量', '销售额', '使用券的销售额', '购买人数','订单价', '平均回访天数', '平均购买天数'];//
  26. $bt_sub = ['0-20', '21-50', '51-70', '71-100', '101-200', '200以上'];
  27. foreach($bt as $k => $v) {
  28.     $col       = chr(65 + $k);
  29.     if($v == '平均回访天数'){
  30.         $col   = 'P';
  31.     }elseif($v == '平均购买天数'){
  32.         $col   = 'Q';
  33.     }
  34.     $mergeLine = $col.'3:'.$col.'4';
  35.     $celV      = $col.'3';
  36.     $mergeCol  = 'K3:O3';
  37.     if($v == '订单价'){
  38.         $objWorksheet->mergeCells($mergeCol)->setCellValue('K3', $v)->getStyle('K3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('f8cbad');
  39.         $objWorksheet->getStyle('K3')->getAlignment()->setHorizontal($hcenter);
  40.         foreach($bt_sub as $kk => $vv){
  41.             $cel = chr(ord('K') + $kk) . '4';
  42.             $objWorksheet->setCellValue($cel, $vv)->getStyle($cel)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('fce4d6');
  43.             $objWorksheet->getStyle($cel)->getAlignment()->setHorizontal($hcenter);
  44.         }
  45.     }
  46.     $objWorksheet->mergeCells($mergeLine)->setCellValue($celV, $v)->getStyle($celV)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('f8cbad');
  47.     $objWorksheet->getStyle($celV)->getAlignment()->setHorizontal($hcenter);
  48.     $objWorksheet->getStyle($celV)->getAlignment()->setVertical($vcenter);
  49. }
  50. //数据体
  51. foreach($datalist as $k => $v){
  52.     $lineno3   = ($k == 0 ?  5  : ($k + 5));
  53.     $objWorksheet->setCellValue(chr(ord('A')).$lineno3, $v['qun_id']);
  54.     $objWorksheet->setCellValue(chr(ord('B')).$lineno3, $v['update_time']);
  55.     $objWorksheet->setCellValue(chr(ord('C')).$lineno3, $v['members']);
  56.     $objWorksheet->setCellValue(chr(ord('D')).$lineno3, $v['view_nums']);
  57.     $objWorksheet->setCellValue(chr(ord('E')).$lineno3, $v['coupon_user']);
  58.     $objWorksheet->setCellValue(chr(ord('F')).$lineno3, $v['orders']);
  59.     $objWorksheet->setCellValue(chr(ord('G')).$lineno3, $v['sales_money']);
  60.     $objWorksheet->setCellValue(chr(ord('H')).$lineno3, $v['coupon_money']);
  61.     $objWorksheet->setCellValue(chr(ord('I')).$lineno3, $v['buyers']);
  62.     $objWorksheet->setCellValue(chr(ord('J')).$lineno3, $v['buyer_0_20']);
  63.     $objWorksheet->setCellValue(chr(ord('K')).$lineno3, $v['buyer_21_50']);
  64.     $objWorksheet->setCellValue(chr(ord('L')).$lineno3, $v['buyer_51_70']);
  65.     $objWorksheet->setCellValue(chr(ord('M')).$lineno3, $v['buyer_71_100']);
  66.     $objWorksheet->setCellValue(chr(ord('N')).$lineno3, $v['buyer_101_200']);
  67.     $objWorksheet->setCellValue(chr(ord('O')).$lineno3, $v['buyer_200_']);
  68.     $objWorksheet->setCellValue(chr(ord('P')).$lineno3, $v['view_days_avg']);
  69.     $objWorksheet->setCellValue(chr(ord('Q')).$lineno3, $v['buy_days_avg']);
  70. }
  71. $filename = $sheet_title.".xlsx";
  72. $ua       = $_SERVER["HTTP_USER_AGENT"];
  73. $encoded_filename = urlencode($filename);
  74. $encoded_filename = str_replace("+", "%20",$encoded_filename);
  75. header('Content-Type: application/octet-stream');
  76. if (preg_match("/MSIE/", $ua)) {
  77.     $filename = $encoded_filename;
  78.     header('Content-Disposition: attachment;filename="' .$filename . '"');
  79. }else if (preg_match("/Firefox/", $ua)){
  80.     header('Content-Disposition: attachment; filename*="utf8\'\'' . $filename . '"');
  81. }else {
  82.     header('Content-Disposition: attachment; filename="' . $filename . '"');
  83. }
  84. ////////////////////////////////////////
  85. header('Cache-Control: max-age=0');
  86. // If you're serving to IE 9, then the following may be needed
  87. header('Cache-Control: max-age=1');
  88. // If you're serving to IE over SSL, then the following may be needed
  89. header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
  90. header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
  91. header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
  92. header ('Pragma: public'); // HTTP/1.0
  93. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  94. $objWriter->save('php://output');
  95. exit();
复制代码

唉,终于可以小小的休息一下了,明天继续加班。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:13.59.111.183,GMT+8, 2024-11-25 00:19 , Processed in 0.258873 second(s), 76 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2024 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表