vérifier si une fiche existe dans excel
Comment puis-je vérifier si une fiche existe dans excel à l'aide de l'interopérabilité. J'ai essayé ce qui suit, mais il déclenche une COMException si pas de là.. Est-il un meilleur moyen de découvrir qu'en fait en regardant l'exception
Worksheet sheet = null;
Sheets worksheets = some;
sheet = (Worksheet)worksheets.get_Item("sheetName");
if(sheet!=null)
{
//do something
}
Edit:
Merci pour les commentaires les gars.
j'ai écrit une fonction
private Dictionary<string, Worksheet> GetSheetsMap(Sheets worksheets)
{
if (worksheets == null)
throw new ArgumentNullException("worksheets");
Dictionary<string, Worksheet> map = new Dictionary<string, Worksheet>(StringComparer.CurrentCultureIgnoreCase);
foreach (Worksheet s in worksheets)
{
map.Add(s.Name, s);
}
return map;
}
Et je l'utilise comme ci-dessous
Dictionary<string, Worksheet> sheetMap = GetSheetsMap(worksheets);
Worksheet sheet = null;
if (sheetMap.TryGetValue(ExtendedTemplateManager.BasicUserTemplate, out sheet))
{
//found it.
}
else
{
//not
}
OriginalL'auteur ps. | 2010-04-27
Vous devez vous connecter pour publier un commentaire.
Avez-vous un objet Workbook? Si oui, vous pouvez effectuer une itération sur le Classeur.Les feuilles de tableau et vérifier le Nom de la propriété de chaque Feuille.
OriginalL'auteur brydgesk
D'abord examiner si une exception n'est pas réellement approprié. Vous vous attendez à une feuille avec un certain nom pour être là. Si ce n'est pas le cas, pouvez-vous encore significative poursuivre l'exécution de votre programme?
Si vous le pouvez, vous pouvez éviter de l'exception par itération les fiches de collecte et de regarder un match sur le Nom de la propriété.
OriginalL'auteur Hans Passant
Voici une LINQ façon de le faire (et cette méthode renvoie null si la feuille n'existe pas):
OriginalL'auteur pmartin
Si vous avez de la feuille de calcul du classeur et des objets, vous pouvez les parents vérifier
si (la feuille.Parent == classeur)
OriginalL'auteur Makatun