VSTO合并单元格

在VSTO(/ JET OLEDB或其他读取excel文件的方法)中有任何方法来判断数据是来自单个单元格还是合并的单元格范围,并得到这个范围?

这里最短的路线是使用Boolean Range.MergeCells属性。

假设你的单元格引用被命名为myCell ,你可以使用类似于:

 if (myCell.MergeCells) { // The 'myCell' is part of a merged cell area. } Else { // The 'myCell' is not part of any merged cell area. } 

您也可以检查Range.MergeArea属性返回的Range上的Range.MergeArea

 if (myCell.MergeArea.Cells.Count > 1) {...} 

要么:

 if (myCell.MergeArea.Count > 1) {...} 

最后一个例子是因为Range.Count属性总是返回与Range.Cells.Count相同的值。

假设您使用可以调用和使用Excel对象模型的方法,请检查单元格的MergeArea属性以查看它是否包含该单元格以外的任何内容。 如果是这样,则该单元是MergeArea的一部分。 以下是我在VBA中完成的工作:

 IF CurrCell.MergeArea.Rows.Count > 1 Or CurrCell.MergeArea.Columns.Count > 1 Then 'CurrCell is part of a MergeArea... ' 

等效的C#VSTO代码应该非常相似。