2010-02-25 4 views
4

J'utilise fréquemment des solutions basées sur un modèle Excel VSTO. L'une des choses que j'aime dans ce type de projet est que je peux utiliser des ensembles de données mis en cache dans le modèle ou la feuille de calcul Excel pour gérer l'état de l'application qui persiste après que l'utilisateur ait enregistré le fichier. Cependant, les ensembles de données mis en cache créent un problème: le schéma du document est lié à la version de l'application. Cela n'a pas été un gros problème, mais j'ai réalisé que ce serait une bonne idée de créer un mécanisme qui lirait la version du document Excel lorsqu'il s'ouvrirait afin de détecter et gérer les incompatibilités de version. Par exemple, si mon plugin 2.1 ouvre un document 1.5, le schéma des données mises en cache ne correspondra pas à ce qui est attendu.Version du document Excel dans le complément VSTO

Existe-t-il un moyen standard ou recommandé de baliser le modèle Excel ou la feuille de calcul? Si non, quelqu'un a-t-il des suggestions sur la façon de le faire?

Répondre

3

J'utilise habituellement le Worksheet.CustomProperties pour persister des informations comme ceci dans ma feuille de calcul. Toutes les informations que vous avez placées dans la collection CustomProperties sont enregistrées avec la feuille de calcul et sont rechargées avec les informations de feuille de calcul lorsque vous rechargez la feuille de calcul.

Les classeurs prennent également en charge les propriétés personnalisées, mais je pense que dans votre cas, Worksheet.CustomProperties est la solution.

+0

Oui, parfait! Spécifique à la feuille de travail et non modifiable par l'utilisateur. C'est ce que je cherchais, merci! –

+0

Bonne idée - maintenant, peut-il être automatisé dans la fonction de publication dans Visual Studio afin que les informations majeures, mineures, de révision et de construction entrent dans elle? – Fuhrmanator

+0

@Fuhrmanator: vous pourriez probablement dp que si vous avez enregistré les informations de version dans le CustomXmlPart. Beaucoup de façons de la peau * que * chat. – code4life

0

Je ne sais pas standard, mais vous pouvez envisager:

  1. L'utilisation d'un document personnalisé propriété accessible par Microsoft.Office.Core.DocumentProperties (How to: Read from and Write to Document Properties);
  2. Une cellule protégée dans la feuille de calcul elle-même;

Avec la première approche, l'utilisateur peut modifier manuellement cette propriété ou la supprimer. Cependant, dans la deuxième approche, vous auriez protégé les cellules dans la feuille de calcul qui, si je me souviens bien, présentera des problèmes si vous voulez trier les données dans cette feuille de calcul.

+0

Ce n'est pas exactement ce que je cherchais, mais je pense qu'il y a quelque chose à dire pour mettre le cachet de version dans les propriétés doc. Certes, l'utilisateur peut modifier la version, mais ils peuvent également l'afficher, ce qui est d'une grande aide pour le dépannage. Les cellules protégées sont nécessaires dans la plupart des cas, mais elles sont aussi une nuisance, et elles sont spécifiques à une feuille plutôt qu'à un classeur, donc je préférerais la solution de propriété de document. –

0

J'ai rencontré un problème similaire (comment déterminer la version Excel à partir du code VSTO). J'ai trouvé votre question lors de la recherche d'une solution. Ce qui a fonctionné pour moi était la propriété Version de l'objet Application Excel. À partir d'une feuille de calcul:

Me.Application.Version 

ou peut-être, selon l'endroit où vous êtes

Globals.ThisWorkbook.Application.Version 

Quoi qu'il en soit, la valeur est "11.0" pour Excel 2003 et "12,0" pour 2007.

Cependant, en relisant votre problème, vous devez connaître la version qui a créé un classeur. Vous pouvez essayer Workbook.CalculationVersion, qui "obtient un nombre qui indique la version d'Excel pour laquelle le classeur a été recalculé pour la dernière fois." Les quatre chiffres les plus à droite sont le numéro de version du moteur de calcul mineur et les autres chiffres (à gauche) de Microsoft Office Excel. " par http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.calculationversion.aspx

+0

Merci pour l'info.Je n'ai pas besoin de savoir quelle version d'Excel a créé un classeur. Ma question concerne l'utilisation d'ensembles de données mis en cache dans un document ou une solution basée sur un modèle. Ce que j'essaye de faire est de mettre un cachet de version sur le document lui-même afin que je puisse vérifier le schéma des données mises en cache. –

Questions connexes