You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PHPExcel合并行列后打开Excel报错,如何实现目标合并效果?

问题根源

你出现报错的核心原因是合并区域重叠冲突:

  • 你先执行了D13:D15、E13:E15这类D-H列的纵向合并操作,后续又执行D13:H13这类13-15行的横向合并操作,两个操作的合并范围出现重叠,PHPExcel无法处理这种冲突的合并定义,导致生成的xlsx文件结构损坏,打开就报错。

修正方案

目标表格的结构不需要做D-H列的纵向合并,只需要保留A-C列的4行纵向合并,再新增D-H列13-15行的每行横向合并即可,修正后完整代码如下:

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

// 只保留A-C列的纵向合并
$objPHPExcel->getActiveSheet()->mergeCells('A13:A16');
$objPHPExcel->getActiveSheet()->mergeCells('B13:B16');
$objPHPExcel->getActiveSheet()->mergeCells('C13:C16');

// 新增D-H列13-15行的每行横向合并,删除原有D-H列纵向合并的冗余代码
$objPHPExcel->getActiveSheet()->mergeCells('D13:H13');
$objPHPExcel->getActiveSheet()->mergeCells('D14:H14');
$objPHPExcel->getActiveSheet()->mergeCells('D15:H15');

// 赋值逻辑保持不变即可
$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');

内容的提问来源于stack exchange,提问作者Mads Sander Høgstrup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:06:06