2010-05-20 8 views
0

Besoin d'obtenir la valeur d'une énumération d'une chaîne littérale donnée comme "xlCenter" (ces valeurs sont copiées et collées depuis Excel Macro). Je voudrais récupérer la valeur constante actuelle (int) -4108 = "xLCenter" via com marshaling est-ce possible? si c'est le cas, comment ?Comment récupérer les valeurs d'une énumération de littéral de chaîne donné

Idéalement, je suis à la recherche fonctionnent comme ce

public int ExcelConstant(string constantName) 
{ ...} 

Merci

Répondre

2

Dans Visual Studio vous devez ajouter une référence à Excel dans votre projet. Vous trouverez Excel dans l'onglet COM du dialogue Ajouter une référence. Le nom est Bibliothèque d'objets Microsoft Excel 12.0 (ou un nom légèrement différent si vous utilisez une autre version d'Excel).

Dans votre projet, vous pouvez ensuite utiliser des types dans les espaces de noms Microsoft.Office. Par exemple, vous voudrez probablement utiliser la constante d'énumération Microsoft.Office.Interop.Excel.Constants.xlCenter. Si vous avez besoin de la valeur numérique que vous lancez simplement à un nombre entier:

Int32 xlCenterValue = (Int32) Microsoft.Office.Interop.Excel.Constants.xlCenter; 

Ou vous pouvez créer une fonction que vous avez décrit dans votre question:

public Int32 ExcelConstant(String constantName) { 
    return Enum.Parse(
    typeof(Microsoft.Office.Interop.Excel.Constants), 
    constantName 
); 
} 

Si vous voulez appeler l'automatisation Excel API du code managé vous ne vous souciez probablement pas des valeurs numériques des énumérations. Au lieu de cela, vous devez utiliser l'énumération directement dans votre code:

var worksheet = (Worksheet) excel.ActiveWorkbook.ActiveSheet; 
var cell = (Range) worksheet.Cells[1, 1]; 
cell.HorizontalAlignment = Constants.xlCenter; 
Questions connexes