2017-03-11 2 views
0

Je développe un complément pour Excel à l'aide de la plate-forme Office Add-ins. Dans ce complément, j'écris des données dans une plage à l'aide de la fonction setSelectedDataAsync **. Cela fonctionne correctement, mais une fois les données écrites, je ne peux pas supprimer ou modifier les cellules (bien que je puisse sélectionner de nouvelles plages) sauf si je clique n'importe où en dehors de la feuille de calcul ou double-cliquez sur une cellule. Je pense que c'est un problème avec Excel ne pas retrouver la mise au point correctement (le nom de fichier dans le haut de l'application reste grisé).Impossible de modifier les cellules après un setSelectedDataAsync dans Excel

Certains utilisateurs semblent penser qu'Excel ne répond plus, ce qui pose problème.

Est-ce un problème connu? Y a-t-il un travail pour ça?

** J'ai remarqué que setSelectedDataAsync est beaucoup plus rapide que la définition de range.values ​​dans une matrice, puis ctx.sync(). Est-ce que je perds certaines fonctionnalités importantes en n'utilisant pas cette dernière méthode?

+0

Je me rends compte que vous demandez un comportement plus large question, mais il est utile de fournir un exemple de code, en particulier un exemple minimal, complet et vérifiable (http://stackoverflow.com/help/mcve) –

Répondre

1

Ce problème n'est pas connu (impossible d'interagir avec la feuille de calcul après le réglage des données). Nous pouvons examiner cela. Surpris d'apprendre que setSelectedDataAsync fonctionne plus vite que la plage. values ensemble. La syntaxe par lot vous permet de combiner non seulement une instruction, mais de nombreuses instructions connexes telles que la définition du format de nombre, la police, l'arrière-plan, etc. et une seule synchronisation() pour envoyer toutes les instructions dans un lot. Ainsi, il est plus efficace lorsque vous combinez des instructions connexes.

Il n'y a aucune restriction quant à l'API à utiliser en tant que telle; Cependant, la version Excel1.1 a été introduite avec Office 2016 et de nombreuses versions ont été ajoutées depuis lors, ajoutant de nouvelles fonctionnalités en cours de route.

API setSelectedDataAsync() a été conçu pour fonctionner dans des hôtes tels que Excel, Word, etc., et donc ne pas aller plus loin en termes de mise en format numérique, formats, etc.

+0

J'ai trouvé la cause du moment en essayant de construire un exemple. Dans le cadre du complément j'ai un Iframe incorporé dans le volet des tâches, l'Iframe se chargeait chaque fois que j'appelais la commande du ruban et il prenait le focus à partir d'Excel. J'ai déplacé la fonction dans un fichier de fonction séparé et maintenant il fonctionne comme prévu. En ce qui concerne setSelectedDataAsync fonctionnant plus vite que .values ​​set, je voulais dire pour une seule opération d'écriture d'une grande matrice, je ne suis pas en train de charger des instructions. Merci beaucoup pour votre temps, et désolé pour la confusion concernant le problème d'origine. Cordialement! –