phpexcel导出大量数据合并单元格_PHPExcel处理一个单元格内多条数据拆分成多个单元格多条数据...

日期: 2020年6月17日

分类: PHP

Tags: Excel

阅读量: 1,221

一、描述需求

如图,当我们遇到一条数据中,某一项内容有多条数据,为了方便文档查阅,我们需要在那一项数据进行拆分单元格。那么我的做法是,进行重组数组,将一条数据根据图中红框拆分成两条数据;并将除去【商品信息】其他项进行合并单元格即可。最终效果如下图:

二、上代码逻辑

上图为原数组,首先需要将这两个数组根据 $data[6] 重组为五个数组。

$newlist = [];

foreach ($list as $k => $v) {

if (is_array($v[6])) {

$temp = $v;

$tempSix = $v[6];

$temp[6] = '';

foreach ($tempSix as $kk => $vv) {

$temp[6] = $vv;

$newlist[] = $temp;

}

}

}

效果及思路如图所示:

至此只完成了1/2,会导出五条数据,而实质上我们是要两条数据,只是【商品信息】这一项有多个单元格。

接下来我们进行完结。

首先我们需要知道 PHPExcel 合并单元格需要两个参数,起始和结束的单元格坐标,那么我们接下来重点就在处理这一块。思维精华如下代码,更多靠意会。。。

//获取$data[6]数量

foreach ($oldList as $k => $v) {

$countArr[] = count($v[6]);

}

if ($countArr) {

$numArr = [];

$start = 4;//文档前三行是标题 所以start为4

foreach ($countArr as $k => $v) {

$end = ($start + $v) - 1;

$numArr[] = [

'start' => $start,//起始数

'end' => $end,//结束数

];

$start = $end + 1;

}

}

$overcellkey = [];

foreach ($cellkey as $k => $v) {

unset($cellkey[6]);//删除不需要合并单元格的字母

}

//遍历字母

foreach ($cellkey as $k => $v) {

foreach ($numArr as $kk => $vv) {

//拼接坐标

$overcellkey[] = [

'start' => $v . $vv['start'],//合并开始坐标

'end' => $v . $vv['end'],//合并结束坐标

];

}

}

if ($overcellkey) {

foreach ($overcellkey as $k=>$v){

//进行上下单元格合并。

$sheet->mergeCells($v['start'] . ':' . $v['end']);

}

}

收工效果:

Finally,谢谢大家的阅读!祝每天开心~

版权声明:本文为博主原创文章,未经博主允许不得转载。

赞赏

微信赞赏支付宝赞赏

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值