J'utilise VSTO pour créer un add-on Excel. Cet add-on récupère et affiche beaucoup de données à partir d'un serveur SQL. Cela fonctionne bien, mais plus tard, je prévois d'accéder à certaines des données à l'intérieur de l'Excel et de la modifier à certains égards. Mon problème est que j'ai besoin d'un moyen de classifier les cellules que je veux modifier. Y a-t-il un moyen d'ajouter des méta-données à une cellule pour savoir s'il s'agit d'une cellule qui devrait être modifiée? Par exemple. Ajoutez un attribut à la cellule, par exemple. "editable_cell", et faire quelque chose comme Excel.Findcellswithaibute ("editable_cell") pour trouver les cellules recherchées après la recherche de cellules recherchées? P>
merci! p>
5 Réponses :
Je ne me souviens pas d'un moyen de faire exactement ce que vous demandez. Ce que j'ai vu fait dans le passé, définissez des noms de plage basés sur ce que vous voudrez peut-être rechercher. Une autre option consiste à masquer une cellule à côté d'elle ou d'un autre décalage prédéterminé (par exemple 3 cellules à droite, ou à la même position, mais sur une page cachée). La cellule cachée / la page aurait les données que vous rechercheriez. P>
Une chose qui semble avoir accidentellement émergé comme une meilleure pratique sur le cabinet de comptabilité, j'ai utilisé pour que vous puissiez pousser toutes vos données dans une page "laide" masquée et utilisez des formules / recherches pour faire référence à votre Les données. De cette façon, vous pouvez mettre à jour la page "laid" et savoir où les données sont tout en ayant une "jolie page" que les utilisateurs peuvent singe à la hauteur de leur contenu " p>
Vous voudrez peut-être examiner la cartographie XML: http://msdn.microsoft.com/en-us /Library/aa203737(Office.11).aspx P>
Il y a plusieurs moyen de faire cela. Je ne connais pas vos exigences spécifiques, alors je vais préciser brièvement certaines solutions. p>
Créez une plage nommée, mais ajouter / supprimer des données peut affecter la plage nommée définie si vous ne le faites pas correctement. Parfois, il est préférable de définir une gamme nommée cellulaire unique pour agir en tant que signet, puis "Sélectionner la plage" vous permettra toutes les données. P> LI>
créer un style. Appliquez ce style à chaque cellule de données que vous souhaitez "trouver". Définissez une méthode qui retourne une base de plage sur laquelle les cellules ont le style spécifié. P> li>
Créer un créer une liste. Cela présente de nombreux avantages. Vous pouvez ajouter / supprimer des données à volonté. Ajouter / supprimer des colonnes. Pensez à une liste comme une table. P> li>
Utilisez la cartographie XML ( http: // msdn.microsoft.com/en-us/library/aa203737(Office.11).aspx ) Comme "Code4Life" mentionne. P> Li>
Si le classeur est XMLSS, puis définissez un nouvel espace de noms et ornez les cellules avec un attribut de l'espace de noms. Vous pouvez ensuite "interroger" en utilisant xpath. C'est un très puissant car vous pouvez intégrer tout ce qui est nécessaire dans un classeur. P> LI>
ul>
chacun a ses avantages / inconvénients. J'ai utilisé chaque solution plusieurs fois. P> pivotcache code> objet. Cet objet a la capacité de se mettre à jour et de réduire la taille du fichier, en particulier si le cache est utilisé à plusieurs reprises dans un classeur. C'est également un moyen de contourner la limitation du nombre de lignes dans une feuille de calcul. P> li>
Amissico a énuméré de très bonnes solutions. J'aimerais ajouter un qui a fonctionné pour moi:
en C # (Exceldna / VSTO) ou VBA Vous pouvez faire quelque chose comme: p> L'inconvénient évident serait que l'utilisateur puisse voir ce commentaire - dans mon cas, cela a très bien fonctionné car je pourrais fournir des diagnostics utiles à l'utilisateur, et aussi analyser le même texte pour obtenir les méta-données que je voulais. p> vous pouvez Cachez également le commentaire à l'aide de: p> Toutefois, notez que cela cache tous les commentaires, pas seulement celui que vous avez ajouté. Pour itérer sur des commentaires dans une feuille, vous pouvez utiliser ce qui suit: p>
Les métadonnées stockées dans des commentaires sont trop facilement remplies par un utilisateur pour être utile et pourraient conduire au document "déconnecté"
Vous pouvez intégrer vos métadonnées au niveau du classeur à l'intérieur d'un CustomXMLPART. Le CustomXMLPART pourrait stocker un dictionnaire sérialisé. Le dictionnaire pourrait stocker des adresses de cellules sous forme de clés et les métadonnées correspondantes comme valeur. P>
Ajout d'une partie XML personnalisée: http://msdn.microsoft.com/ EN-US / Bibliothèque / BB608612.ASPX P>
Notez que cela ne fonctionne que pour les formats de fichier XLS et XLSX. P>