使用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
相关产品推荐
相关产品推荐

