1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > phpexcel导出大量数据合并单元格_PHPExcel处理一个单元格内多条数据拆分成多个单元格

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

时间:2021-02-15 01:48:03

相关推荐

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

日期: 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,谢谢大家的阅读!祝每天开心~

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

赞赏

微信赞赏支付宝赞赏

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。