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,謝謝大家的閱讀!祝每天開心~
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
贊賞
微信贊賞支付寶贊賞
總結
以上是生活随笔為你收集整理的phpexcel导出大量数据合并单元格_PHPExcel处理一个单元格内多条数据拆分成多个单元格多条数据...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 目标检测之Two Stage
- 下一篇: T100 genero report (