Есть ли способ в VSTO (/JET OLEDB или другие методы чтения файлов Excel), чтобы определить, поступают ли данные из одной ячейки или объединенного диапазона ячеек и получить этот диапазон?
Объединенные ячейки VSTO
Ответы (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
это очень интересно, я проверю это решение и отмечу ответ, если оно сработает.
- person Jacob; 30.09.2009