简体   繁体   中英

PHPexcel merging columns and rows

So I'm trying to merge multiple rows and columns together, but I get an error when I open my Excel file.

This is how my excel look right now:

在此处输入图像描述

What I'm trying to do is making it look like this:

在此处输入图像描述

I've made this with the following code:

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);

//Columns merging
$objPHPExcel->getActiveSheet()->mergeCells('A13:A16');
$objPHPExcel->getActiveSheet()->mergeCells('B13:B16');
$objPHPExcel->getActiveSheet()->mergeCells('C13:C16');

$objPHPExcel->getActiveSheet()->mergeCells('D13:D15');
$objPHPExcel->getActiveSheet()->mergeCells('E13:E15');
$objPHPExcel->getActiveSheet()->mergeCells('F13:F15');
$objPHPExcel->getActiveSheet()->mergeCells('G13:G15');
$objPHPExcel->getActiveSheet()->mergeCells('H13:H15');

//Adding cell text
$objPHPExcel->getActiveSheet()->SetCellValue('A13', 'Sr. No.');
$objPHPExcel->getActiveSheet()->SetCellValue('B13', 'Component name');
$objPHPExcel->getActiveSheet()->SetCellValue('C13', 'Features');
$objPHPExcel->getActiveSheet()->SetCellValue('D13', 'Title');
$objPHPExcel->getActiveSheet()->SetCellValue('D16', 'HW Details');
$objPHPExcel->getActiveSheet()->SetCellValue('E16', 'Test Case ID/ Test Steps');
$objPHPExcel->getActiveSheet()->SetCellValue('F16', 'Expected');
$objPHPExcel->getActiveSheet()->SetCellValue('G16', 'Result');
$objPHPExcel->getActiveSheet()->SetCellValue('H16', 'Remark');

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('some_excel_file2.xlsx');

I thought I could merge the columns first and then the rows after, to get the desired output, by doing the following after merging the columns:

$objPHPExcel->getActiveSheet()->mergeCells('D13:H13');
$objPHPExcel->getActiveSheet()->mergeCells('D14:H14');
$objPHPExcel->getActiveSheet()->mergeCells('D15:H15');

But this creates a error.

How should I merge these rows/columns so I get the last picture?

So my brain just didn't work, and now I have the solution, so to merge a box I simply just had to use D13:H15 which marks a area like in the picture below: 在此处输入图像描述

So the code will look like:

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);

//Columns merging
$objPHPExcel->getActiveSheet()->mergeCells('A13:A16');
$objPHPExcel->getActiveSheet()->mergeCells('B13:B16');
$objPHPExcel->getActiveSheet()->mergeCells('C13:C16');

//SOLUTION HERE
$objPHPExcel->getActiveSheet()->mergeCells('D13:H15');

//Adding cell text
$objPHPExcel->getActiveSheet()->SetCellValue('A13', 'Sr. No.');
$objPHPExcel->getActiveSheet()->SetCellValue('B13', 'Component name');
$objPHPExcel->getActiveSheet()->SetCellValue('C13', 'Features');
$objPHPExcel->getActiveSheet()->SetCellValue('D13', 'Title');
$objPHPExcel->getActiveSheet()->SetCellValue('D16', 'HW Details');
$objPHPExcel->getActiveSheet()->SetCellValue('E16', 'Test Case ID/ Test Steps');
$objPHPExcel->getActiveSheet()->SetCellValue('F16', 'Expected');
$objPHPExcel->getActiveSheet()->SetCellValue('G16', 'Result');
$objPHPExcel->getActiveSheet()->SetCellValue('H16', 'Remark');

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('some_excel_file2.xlsx');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM