使用 PHPExcel 将 Excel 中的单元格按行和列合并在一起

2022-08-30 22:51:53

我需要使用PHPExcel按行和列合并Excel中的Excel中的单元格。我尝试了以下方法。

$sheet->mergeCells("G".($row_count+1).":G".($row_count+4));             
$sheet->mergeCells("H".($row_count+1).":H".($row_count+4));             
$sheet->mergeCells("I".($row_count+1).":I".($row_count+4));     

其中变量具有一些不可预测的动态值,如 25、50、75 等(无常规模式)。$row_count

enter image description here

它会合并单元格,如前面的快照所示,如“注释”单元格正下方所示。按行合并这些单元格后,我尝试按列合并它们,如下所示。

$sheet->mergeCells("G".($row_count+1).":I".($row_count+1));             

但它不起作用。当我尝试打开excel文件时,它要求确认(带有确认框)

Excel 在“报表.xlsx”中发现不可读的内容。是否要恢复此工作簿的内容?如果您信任此工作簿的源,请单击“是”。

那么如何在Excel中将行和列的单元格合并在一起?


答案 1

合并只需要一个有效范围的单元格,如A1:B2,所以你

$sheet->mergeCells("G".($row_count+1).":I".($row_count+1));

应该可以毫无问题地工作。

你能不能尝试一个简单的测试用例来证明这给你带来了问题,而不是你的脚本中的其他东西。

编辑

在重读你的问题之后:你的问题可能是你试图合并已经是合并范围的一部分的单元格,而不是合并每一行,然后尝试按列合并,尝试一次合并整个范围。

$sheet->mergeCells("G".($row_count+1).":I".($row_count+4));              

答案 2

还有一种用于单元格合并的方法

    /**
 * Set merge on a cell range by using numeric cell coordinates
 *
 * @param   int $pColumn1   Numeric column coordinate of the first cell
 * @param   int $pRow1      Numeric row coordinate of the first cell
 * @param   int $pColumn2   Numeric column coordinate of the last cell
 * @param   int $pRow2      Numeric row coordinate of the last cell
 * @throws  Exception
 * @return PHPExcel_Worksheet
 */
     public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)

推荐