phpexcel可以动态合并单元格吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpexcel可以动态合并单元格吗?相关的知识,希望对你有一定的参考价值。

phpexcel可以动态合并单元格吗?
合并行的单元格

参考技术A $objPHPExcel->getActiveSheet()->mergeCells('A1:F1'); //合并
$objPHPExcel->getActiveSheet()->unmergeCells('A1:F1'); // 拆分
你可以去看下phpexcel文档
参考技术B 可以得,具体可以查看官方文档 参考技术C 是可以的,在PHPExcel中有这样的操作追问

代码应该怎写啊?

追答//下面是总结的几个使用方法
include 'PHPExcel.php';
include 'PHPExcel/Writer/Excel2007.php';
//或者include 'PHPExcel/Writer/Excel5.php'; 用于输出.xls的
//创建一个excel
$objPHPExcel = new PHPExcel();
//保存excel—2007格式
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
//或者$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 非2007格式
$objWriter->save("xxx.xlsx");
//设置当前的sheet
$objPHPExcel->setActiveSheetIndex(0);
//设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle('Simple');
//设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'String');
$objPHPExcel->getActiveSheet()->setCellValue('A2', 12);
$objPHPExcel->getActiveSheet()->setCellValue('A3', true);
$objPHPExcel->getActiveSheet()->setCellValue('C5', '=SUM(C2:C4)');
$objPHPExcel->getActiveSheet()->setCellValue('B8', '=MIN(B2:C5)');
//合并单元格
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
//分离单元格
$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28');

具体运用可以看下手册或者百度,

thinkphp3.2.3集成phpexcel1.8导出设置单元格合并

1 到这里下载classes里面的文件

https://github.com/PHPOffice/PHPExcel

2 然后放到 thinkphp的vendor 新建一个文件夹 Phpexcel  然后把文件放进去

3 在封装一个函数

function exportExcel($data, $savefile = null, $title = null, $sheetname = sheet1)  
    vendor(Phpexcel.PHPExcel); //从PHPMailer目录导class.phpmailer.php类文件
    //import("Vendor.excel.phpexcel"); 
    //若没有指定文件名则为当前时间戳 
    if (is_null($savefile))  
        $savefile = time(); 
     
    //若指字了excel表头,则把表单追加到正文内容前面去 
    if (is_array($title))  
        array_unshift($data, $title); 
     
 
    $objPHPExcel = new \\PHPExcel(); 
    //Excel内容 
    $head_num = count($data); 
 
    $obj = $objPHPExcel->setActiveSheetIndex(0); 
    $obj->mergeCells(A1:K1); //第一行
    $obj->setCellValue(A1,‘‘);  
    $obj->mergeCells(A2:K2); //第二行
    $obj->setCellValue(A2,好助教支付清单);  
    $obj->mergeCells(A3:K3); //第三行
    $obj->setCellValue(A3,用户:北交大出版社    时间:2019-01-12至2019-12-12练习册:200种   支付金额:20000元);  
   
    $objPHPExcel->getActiveSheet()->getStyle(A2)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //水平居中 
    $objPHPExcel->getActiveSheet()->getStyle(A3)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //水平居中 
    $objPHPExcel->getActiveSheet()->getStyle(A2)->getFont()->setSize(20);  //设置字体大小
    $objPHPExcel->getActiveSheet()->getStyle(A3)->getFont()->setSize(12);  //设置字体大小
 
    $objPHPExcel->getActiveSheet()->getRowDimension(A2)->setRowHeight(40);//行高
    $objPHPExcel->getActiveSheet()->getRowDimension(A3)->setRowHeight(30);//行高
    
    foreach ($data as $k => $v)  
        
        $row = $k + 5; //
        $nn = 0; 
 
        foreach ($v as $vv)  
            $col = chr(65 + $nn); //
            $obj->setCellValue($col . $row, $vv); //列,行,值 
            $nn++; 
         
     
    //设置列头标题 
    for ($i = 0; $i < 9; $i++)  
        $alpha = chr(65 + $i); 
        //$objPHPExcel->getActiveSheet()->getColumnDimension($alpha)->setAutoSize(true); //单元宽度自适应  
        $objPHPExcel->getActiveSheet()->getColumnDimension($alpha)->setWidth(20);
        $objPHPExcel->getActiveSheet()->getStyle($alpha . 5)->getFont()->setSize(12);  //设置大小 
        $objPHPExcel->getActiveSheet()->getStyle($alpha . 5)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //水平居中 
        $objPHPExcel->getActiveSheet()->getStyle($alpha . 5)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //垂直居中 
     
 
   $objPHPExcel->getActiveSheet()->setTitle($sheetname); //题目 
   $objPHPExcel->setActiveSheetIndex(0); //设置当前的sheet   
   header(Content-Type: application/vnd.ms-excel); 
   header(Content-Disposition: attachment;filename=" . $savefile . .xls"); //文件名称 
   header(Cache-Control: max-age=0); 
   $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, Excel2007); //Excel5 Excel2007 
   $objWriter->save(php://output); 

4 然后调用这个函数

        $list=array(0=>array(1,5.3数学练习册,*,23121,23122,34000,140000,100,149900,*),
                    1=>array(‘‘,‘‘,founder,*,23123,23124,4,*,*,2019/1/12 21:12:32),
                    2=>array(‘‘,‘‘,nick,*,23124,23125,7,100,149900,*)
        );
        $title = array(序号, 练习册名称, 终端用户, 累计数量(二维码), 个数区间开始, 个数区间结束, 分成, 剩余处理费用, 最终支付, 购买时间); //设置要导出excel的表头 
        exportExcel($list, 1, $title);

5 然后结果的样子

技术图片

以上是关于phpexcel可以动态合并单元格吗?的主要内容,如果未能解决你的问题,请参考以下文章

phpexcel 合并单元格后插入图片 如何让图片居中

PHPExcel合并与拆分单元格

使用 PHPExcel 创建 pdf 时合并单元格不起作用

phpexcel 合并单元格后插入图片 如何让图片居中

thinkphp3.2.3集成phpexcel1.8导出设置单元格合并

php实现excel单元格合并,字体加粗居中等操作