四时宝库

程序员的知识宝库

excel导出合并单元格(excel导入合并单元格)

站点名字一样的需要合并在一起,样式图如下


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;
                            }
                        }
                    }
 
  
  

}
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接