无法通过Range.MergeCells Property for Excel检测合并的单元格

时间:2013-06-24 16:02:54

标签: c# excel export-to-excel

当我向Excel发送数据时,它忽略了某些单元格的合并“属性”,只是写入它找到的第一个单元格。因此,假设我已将A列和B列合并,并且我将数据发送到A列和C列,它实际上会拆分合并的列,因此我留下了一个空列B.

以下是一些上下文代码(一些变量保持通用):

Range cells = this.Worksheet.Cells;
Range cell = (Range)cells[rowIndex, columnIndex];
Boolean merged = (Boolean)cell.MergeCells;        //Here I am trying to determine if the
                                                  //cell is merged.

我的问题是.MergeCells总是返回false。我在这做错了什么?我知道在Excel工作表中合并了单元格。

2 个答案:

答案 0 :(得分:0)

答案是:您的代码是正确的。

Boolean merged = (Boolean)cell.MergeCells; //Cast from dynamic{bool} to bool

这对我有用(Windows 7上的Excel 2013)。 我在自己的测试中注意到了truefalse值。

所以也许你的工作表的单元格不包含合并的单元格!?

答案 1 :(得分:0)

问题是您要转换为布尔值,并且不能始终保证MergeCells会返回布尔值,如最近的问题how to detect merged cells in c# using MS interop excel所述。您还需要检查null的值-有关如何操作的信息,请参见链接的问题。

假设

因此,即使null值实际表明范围中存在合并的单元格,您的代码可能也会发生空值转换为false的情况。