Объединенные ячейки VSTO

Есть ли способ в VSTO (/JET OLEDB или другие методы чтения файлов Excel), чтобы определить, поступают ли данные из одной ячейки или объединенного диапазона ячеек и получить этот диапазон?


person Jacob    schedule 30.09.2009    source источник


Ответы (2)


Кратчайший путь здесь — использовать логическое свойство 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) {...} 

or:

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

Последний пример работает, потому что свойство Range.Count всегда возвращает то же значение, что и Range.Cells.Count.

person Mike Rosenblum    schedule 30.09.2009

Предполагая, что вы используете метод, который может вызывать и использовать объектную модель 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 должен быть довольно похожим.

person RBarryYoung    schedule 30.09.2009
comment
это очень интересно, я проверю это решение и отмечу ответ, если оно сработает. - person Jacob; 30.09.2009