PHPExcel 表格 行 合并

1、效果

2、代码

public function export(){$data = $this->getData();$titleName = '标题名-'.date('Y-m-d-H_i_s');header("Content-type:application/vnd.ms-excel;charset=GBK");header("Content-Disposition:filename={$titleName}.xls");//表格拼接$tableHtml = <<<EOF
<table border="1"><thead><tr ><th>模型</th><th>类名</th><th>方法名</th><th>方法参数</th><th>方法返回值</th></tr></thead><tbody>
EOF;foreach ($data as $k => $v){    //模型$rowCount = $this->getChildrenCount($v);$tableHtml .= '<tr>';$tableHtml .= "<td rowspan='{$rowCount}'>{$v['model']}</td>";foreach ($v['childrens'] as $kk => $vv){ //类名$rowCount = $this->getChildrenCount($vv);$tableHtml .= "<td rowspan='{$rowCount}'>{$vv['class']}</td>";foreach ($vv['childrens'] as $kkk => $vvv){  //方法详情$tableHtml .= <<<EOF
<td>{$vvv['function']}</td>
<td>{$vvv['param']}</td>
<td>{$vvv['return']}</td>
</tr>
EOF;}}}$tableHtml .='</tbody></table>';echo $tableHtml;    //输出表格内容exit();}/*** 递归计算一个数据下的总行数* @param $data* @param int $count* @return int*/public function getChildrenCount($data, &$count = 0){if(isset($data['childrens'])){$tempData = $data['childrens'];foreach ($tempData as $k1 => $v1){$this->getChildrenCount($v1, $count);}}else{$count++;}return $count;}public function getData(){$data = [['id' => 1,'model' => '模块1','childrens' => [['id' => 2,'class' => '模块1-类1','childrens' => [['id'=>4,'function'=>'模块1-类1-方法1','param' => '参数','return' => '返回值1'],['id'=>4,'function'=>'模块1-类1-方法2','param' => '参数','return' => '返回值1'],['id'=>4,'function'=>'模块1-类1-方法3','param' => '参数','return' => '返回值1'],['id'=>4,'function'=>'模块1-类1-方法4','param' => '参数','return' => '返回值1'],]],['id' => 2,'class' => '模块1-类2','childrens' => [['id'=>4,'function'=>'模块1-类2-方法1','param' => '参数','return' => '返回值1'],['id'=>4,'function'=>'模块1-类2-方法2','param' => '参数','return' => '返回值1']]]]],['id' => 1,'model' => '模块2','childrens' => [['id' => 2,'class' => '模块2-类1','childrens' => [['id'=>4,'function'=>'模块2-类1-方法1','param' => '参数','return' => '返回值1'],['id'=>4,'function'=>'模块2-类1-方法2','param' => '参数','return' => '返回值1'],['id'=>4,'function'=>'模块2-类1-方法3','param' => '参数','return' => '返回值1']]],['id' => 2,'class' => '模块2-类2','childrens' => [['id'=>4,'function'=>'模块2-类2-方法1','param' => '参数','return' => '返回值1'],['id'=>4,'function'=>'模块2-类2-方法2','param' => '参数','return' => '返回值1']]]]],['id' => 1,'model' => '模块3','childrens' => [['id' => 2,'class' => '模块3-类1','childrens' => [['id'=>4,'function'=>'模块2-类1-方法1','param' => '参数','return' => '返回值1']]]]],];return $data;}

PHPExcel 表格 行 合并相关推荐

  1. html table 表格 行合并 列合并

    目录 1.表格边框合并 2.行合并 3.列合并 表格:table 行:tr 列:td 属性: border:边框 width:宽 height:高 bordercolor:变宽颜色 cellspaci ...

  2. layui表格行合并

    先看一下最终合并之后的效果,能对单选.复选框进行按照某一列的合并. 最开始的解决方案来自于这篇博客介绍的方法:https://blog.csdn.net/guishifoxin/article/det ...

  3. Latex 表格 行合并,列合并,控制行间距 单元格宽度

    多行合并的时候,需要加入新的usepackage, 不然会报错 \usepackage{multirow} 1.多行合并 \linespread{1.3} %控制行间距 \begin{table*}[ ...

  4. element-ui table表格行合并、标红及数据转换

    先看下效果 看下后端返回的数据格式,首先分析下数据结构,maxstatis,minstatis​​​​​​​,avgstatis​​​​​​​,passtatis是上图表格的四行数据,titles是表 ...

  5. layui根据name获取对象_layui表格行合并;解决侧边固定栏合并

    实现效果图: 适配分页:全选: 后台嵌套数据: 获取数据后:渲染前操作: ,done:function(res){if(res.data){for(var i = 0;i<res.data.le ...

  6. 保姆级教程 | 表格自动行合并实现

    在 element-ui 和 antv 中都有表格合并,但如何确定哪几行要合并呢? 在随机给定数据的情况下,如何实现自动合并呢?本文将一一解答这些问题. 并在延伸中,谈到了,如何将本文的方法应用到el ...

  7. Element UI-动态合并表格行

    Element UI-动态合并表格行 动态合并表格行的代码主要由 :span-method="objectSpanMethod"中objectSpanMethod方法来实现跨行或跨 ...

  8. POI导出word文件中表格合并方法(行合并,列合并)

    项目中遇到记录一下 POI导出word文件中表格合并方法(行合并,列合并) . // word表格跨列合并单元格//row 指定行.fromCell 开始列数.toCell 结束列数.public v ...

  9. 06 - table表格标签+ 行合并+列合并

    1.table  表格标签属性 在小程序中查看 cellspacing="0"  表格边框合并: 表格:table       行:tr       列:td 属性:       ...

  10. Element表格之表头合并、行合并和列合并

    文章目录 一.合并表头 二.合并表格行 三.合并表格列 最近写vue开发项目的时候,很多地方用到了Element组件中的Table 表格.经过一周的边学边做,我总结了以下三种有关表格的合并方法. 一. ...

最新文章

  1. python_面向对象进阶之slots
  2. ctrl+alt+T出来的终端窗口非常小
  3. 为何要清除浮动?如何清除?
  4. oracle 11g sga max,oracle 10g 11g中的SGA_MAX_SIZE与SGA_TARGET参数
  5. ros 发布信息频率_ROS入门笔记二基础
  6. Improving Opencv9 Eroding and Dilating 和对opencv窗体上有控制按钮的理解
  7. java代码自动生成
  8. NOD32中小企业服务器版部署方法
  9. Linux基础学习总结
  10. 华为路由器NAT经典配置
  11. 批改网复制粘贴_如何使用批改网组织线上考试
  12. linux aria2 离线,使用aria2实现离线下载
  13. python爬虫01-get请求,post请求,参数拼接,re正则解析,bs解析,xpath解析xml及html文件,requests进阶模拟登录,反盗链zhuanqu,代理
  14. laravel 先判断在加查询条件,whereBetween,whereIn
  15. CAD属性编辑操作——回退、重作
  16. 计算方法 7.数值积分计算方法
  17. 让SOLIDWORKS子装配体动起来的方法
  18. 教育邮箱申请jetbrains产品,免费获得AppCode、DataSpell、dotMemory、GoLand、IntelliJ IDEA、PhpStorm、PyCharm专业版
  19. 什么是MIL、SIL、PIL和HIL?
  20. 二级页面全屏html,还是二级网页不能全屏怎么办? 爱问知识人

热门文章

  1. 连接最大数 详解(C++)
  2. 思科网院Packet Tracer实验(十)
  3. 计算机图形学_GAMES101-现代计算机图形学课程 全笔记
  4. python需要学数据结构吗_我也要学python-内置数据结构(一)
  5. 最新计算机操作员高级试题,计算机操作员高级考试试题
  6. java 图片旋转裁剪_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...
  7. java备份_手把手教你实现Java权限管理系统 后端篇(十三):系统备份还原
  8. java 接受gsm信息_android 获取手机GSM/CDMA信号信息,并获得基站信息
  9. c判断数组是否为空_剑指offer编程题 1.二维数组中的查找
  10. 存用部首查字典如何查_SCI文献阅读技巧:3位博士总结如何看文献,干货满满!...