php word 合并相同行

最近在做一个下载word的功能,遇到一个问题:合并相同的行,然后自己做了一下,到这分享给你们,(我写的代码只是样例,如果大佬们有更加好的可以教教我

我的思路比较蠢: 

首先,合并相同的行需要两个参数:start(开始位置),end(结束位置),循环查出来的结果,如果下一行和上一行的相同那么将记录num ++  ; 同时  记录将位置记录下来(这里我说的可能只是我自己的思路,不要着急看代码就可以了) 。那么,这两个参数的问题就解决了,

start = end - num;

代码:

$array = [];   // 记录A这列合并行的数组
$array2 = []; // 记录B这列合并行的数组
$num = 1;    // 记录A这列相同行的个数
$num2 = 1;  // 记录B这列相同行的个数
$arr = [];       // 记录A这列里面的 end位置 和 num 个数
$arr2 = [];  // 记录B这列里面的 end位置 和 num 个数

for ($i = 0; $i < $dataNum; $i++) {
    if ($list[$i]['entrust_num'] == $list[$i + 1]['entrust_num']) {
        $arr["end"] = $i + 2;   // 从第二行开始  记录end位置
        $num++;                  // 记录相同行的个数,
    } else {
        if ($i != 0) {
            $arr["count"] = $num;      // 程序执行到这说明相同的已经记录完,
            $array[] = $arr;            // 记录下需要合并的信息 (多个)
            $arr = [];
            $num = 1;
        }
    }
    if ($list[$i]['sample_num'] == $list[$i + 1]['sample_num']) {
        $arr2["end"] = $i + 2;
        $num2++;
    } else {
        if ($i != 0) {
            $arr2["count"] = $num2;
            $array2[] = $arr2;
            $arr2 = [];
            $num2 = 1;
        }
    }

}

// 循环计算合并单元格   A  (单元格是从A 2 开始计算合并的)
foreach ($array as $k => $v) {
    $objPHPExcel->getActiveSheet(0)->mergeCells("A" . ($v['end'] + 2 - $v['count']) . ":A" . ($v['end'] + 1));
}
// 循环计算合并单元格   B (单元格是从 B2  开始计算合并的)
foreach ($array2 as $k => $v) {
    $objPHPExcel->getActiveSheet(0)->mergeCells("B" . ($v['end'] + 2 - $v['count']) . ":B" . ($v['end'] + 1));
}

以上纯属于自己的数据和思路,只是一个列子,大家以自己的为准。一定要先有思路,后执行。赶紧行动吧。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaofang_up-everyday

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值