VSTO合并了细胞

时间:2009-09-30 17:56:38

标签: c# excel vsto oledb

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

2 个答案:

答案 0 :(得分:0)

假设您使用的方法可以调用&使用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代码应该非常相似。

答案 1 :(得分:0)

这里最短的路线是使用布尔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.
} 

您还可以检查Cells.Count属性返回的范围上的Range.MergeArea

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

或:

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

最后一个示例有效,因为Range.Count属性总是返回与Range.Cells.Count相同的值,按设计。