2009-09-30 6 views
2

Y at-il moyen dans VSTO (/ JET OLEDB ou d'autres méthodes de lecture de fichiers Excel) de dire si les données proviennent d'une seule cellule ou d'une plage fusionnée de cellules et obtiennent cette plage?Cellules fusionnées VSTO

Répondre

0

La route la plus courte ici est d'utiliser la propriété Boolean Range.MergeCells.

En supposant que votre référence de cellule ont été nommés myCell, vous pouvez utiliser quelque chose comme:

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

Vous pouvez également consulter la Cells.Count sur la chaîne retournée par la propriété Range.MergeArea:

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

ou:

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

Le dernier exemple fonctionne parce que la propriété Range.Count renvoie toujours la même valeur que le Range.Cells.Count, par conception.

0

En supposant que vous utilisez une méthode qui peut appeler & utilisez le modèle d'objet Excel, vous vérifiez la propriété MergeArea d'une cellule pour voir si elle contient autre chose que cette cellule. Si c'est le cas, alors cette cellule fait partie d'un MergeArea. Voici comment je l'ai fait dans VBA:

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

Le code équivalent C# VSTO devrait être assez similaire.

+0

c'est très intéressant, je vais vérifier cette solution et marquer comme répondu si elle fait le travail. – Jacob