站点名字一样的需要合并在一起,样式图如下
1.先数据填充 后修改样式
$sheet->rows($data1);
2.首先拿到重复站点的个数,放进一个数组里面 最后结果 $num[3,2];
foreach ($response1['data'] as $kk => $value) {
if ($kk < count($response1['data']) - 1) {
if ($value->site_name == $response1['data'][$kk + 1]->site_name) {
$temp += 1;
} else {
$num[] = $temp;
$temp = 1;
}
}else{
$num[] = $temp;
}
}
}
3.把需要合并的列放进一个数组
$cell =['A','B','C','D'];
4.开始合并
foreach($cell as $item){
$start =2;
foreach($num as $k=>$v){
if($v !=1){
$end =$start+$v-1;
$sheet->mergeCells($item.$start.':'.$item.$end);
$start=$end +1;
}else{
$start +=1;
}
}
}
下面附上完整代码(php)
set_time_limit (0);
Excel::create(uniqid(),function($excel) use ($data,$num){
$excel->sheet('sheet', function($sheet) use ($data){
$sheet->rows($data);
$sheet->getStyle('A:T')->getAlignment()->setWrapText(TRUE);
// 设置单元格宽度
$sheet->setWidth(array(
'A' => 10,
'B' => 20,
'C' => 20,
'D' => 20,
'E' => 20,
'F' => 20,
'G' => 20,
'H' => 20,
'I' => 20,
));
// 设置单元格标题加粗居中
$sheet->cells('A1:T1', function($cells) {
$cells->setFontWeight('bold');
$cells->setAlignment('center');
$cells->setValignment('center');
});
// 设置单元格居中
$sheet->cells('A:T', function($cells) {
$cells->setAlignment('center');
$cells->setValignment('center');
});
});
$cell =['A','B','C','D'];
foreach($cell as $item){
$start =2;
foreach($num as $k=>$v){
if($v !=1){
$end =$start+$v-1;
$sheet->mergeCells($item.$start.':'.$item.$end);
$start=$end +1;
}else{
$start +=1;
}
}
}
}
}