Confidentialité & Cookies
Ce site utilise des cookies. En continuant, vous acceptez leur utilisation. En savoir plus, y compris comment contrôler les cookies.
J’ai passé du temps ces derniers mois à expérimenter la nouvelle API JavaScript Excel.
Ceci est le premier d’une série de publications planifiées examinant l’API JS du point de vue d’un développeur Excel Office.
Le principal avantage de l’API JS est qu’elle vous permet d’écrire du code qui fonctionne pour Windows Excel, Mac Excel, Excel Online et Excel sur IOS. L’API JS est encore immature mais fait l’objet d’un développement rapide par l’équipe d’extensibilité de Microsoft Office, avec de nouvelles versions de l’API arrivant à peu près tous les trimestres.
L’API JS utilise les technologies JavaScript/TypeScript et HTML et CSS basées sur un navigateur. Ses principaux objectifs sont:
- Pour travailler sur une si grande variété de terminaux (mobile, tablette, cloud, ordinateur de bureau).
- Pour cibler les développeurs d’aujourd’hui qui travaillent principalement ou exclusivement à l’aide de technologies web.
L’API s’exécute de manière asynchrone en mettant en file d’attente les interactions de l’API avec Excel jusqu’à ce que vous demandiez qu’elles soient exécutées dans un lot (Contexte.Synchronisation()).
JavaScript & TypeScript
Pour les développeurs VBA ou C, JavaScript est un langage étrange, exaspérant mais étonnamment puissant. Pour mentionner quelques différences:
- Les variables n’ont pas vraiment de types et sont sensibles à la casse. La portée des variables (appelée portée lexicale) est sérieusement étrange et semble souvent rattraper même les développeurs JavaScript chevronnés.Les tableaux
- ne sont pas vraiment des tableaux et n’ont qu’une seule dimension, vous en apprendrez donc rapidement sur les tableaux de tableaux. Ils n’ont pas de limites supérieures fixes et peuvent être clairsemés. Ils ont des méthodes puissantes comme LA CARTE, LA RÉDUCTION, la TRANCHE et le TRI. (Mais il est vraiment difficile de faire fonctionner le tri de tableau JS de la même manière qu’un tri Excel!)
- Les fonctions sont des citoyens de première classe – vous pouvez les transmettre comme des variables – Les fonctions anonymes / Lambda sont entièrement prises en charge – vous devez vraiment vous y prendre!
- Le traitement asynchrone est géré par des choses appelées Promesses qui peuvent être enchaînées avec une certaine difficulté (cette situation est connue sous le nom de Pyramide de Malheur)
- JavaScript en tant que langage évolue encore assez rapidement et possède des fonctionnalités qui peuvent ou non être prises en charge par des navigateurs particuliers
- La popularité de JavaScript est en partie liée et alimentée par les nombreux frameworks très puissants et disponibles gratuitement (jQuery, AngularJS, …)
Et d’ailleurs JavaScript n’est pas une version en langage de script de Java: c’est un langage complètement différent.
TypeScript est une tentative de Microsoft de corriger certaines des défaillances JavaScript les plus flagrantes.
TypeScript est essentiellement un transpileur – il compile TypeScript en JavaScript de sorte qu’à peu près tout ce qui peut exécuter JavaScript peut également exécuter TypeScript transpilé.
Deux avantages majeurs de TypeScript sont:
- Vous pouvez attribuer des types à des variables et elles ont une portée sensible!
- Vous pouvez utiliser Async Await au lieu de Promises, ce qui rend votre code beaucoup plus lisible et évite la Pyramide de Malheur.
Technologies d’API Excel Comparées
Il existe 4 familles principales d’API Excel :
API Excel ‘C’ XLL
Cette API est l’interface la plus étroitement intégrée et la moins accessible au public pour Excel:
- API la plus performante
- L’interface de bas niveau nécessite des compétences en programmation C et en gestion de la mémoire.
- Visual Studio ID
- S’exécute dans le processus Excel.
- La plupart des capacités pour les UDF (multithread, asynchrone, RTD, Cluster, etc.)
- Ne couvre qu’un sous-ensemble du Modèle d’objet Excel
- Prise en charge limitée de l’interface utilisateur native
- Utilisée comme couche de base par de nombreux autres produits / plates-formes / langages (XLL Plus C++, Excel DNA .NET, Addin Express.NET, PyXLL Python, FCell F# …)
- Bureau Windows uniquement
- Niveau d’extension d’application uniquement
- Peut utiliser tous les frameworks C et C++ (Bibliothèque de modèles standard, BOOST …)
API Excel COM et Automation
Cette API est l’API la plus riche et la plus largement utilisée
- Langages primaires VBA et VB6
- Bonnes performances
- Prise en charge du modèle d’objet le plus large
- Prend en charge les UDF synchrones à un seul thread
- S’exécute dans le processus Excel
- Windows
- Ordinateurs de bureau / ordinateurs portables Mac OS (mais VBA uniquement avec certains différences avec Windows VBA)
- L’enregistreur de macros fournit un point d’entrée bas
- Intégré mais l’ancienE pour Windows VBA
- Peut être intégré dans un document ou utilisé comme complément au niveau de l’application.
- VBA en grande partie inchangé depuis de nombreuses années et n’a qu’un framework limité et mourant
API COM-Interop
Cette API ajoute une couche d’interopérabilité .NET supplémentaire au-dessus de l’interface COM/Automation. Idéalement, cela aurait été un obstacle utile jusqu’à ce qu’une interface Excel .NET appropriée ait été développée, mais malheureusement, cela ne s’est jamais produit.
- Performances médiocres
- S’exécute dans un processus séparé
- Prend en charge .NET framework et les langages
- Windows uniquement
- Visual Studio ID
- Principalement au niveau de l’application mais peut être lié à un document à l’aide de VSTO
- Ne convient pas pour UDF
- L’offre de Microsoft est VSTO
Des produits tels que Excel DNA et Addin Express prennent en charge à la fois le monde COM-Interop .NET et l’API ‘C’ pour permettre un support UDF approprié, des performances améliorées tout en conservant la richesse du framework .NET.
Excel JS-API Version 1.4
Le petit nouveau sur le bloc! C’est l’API qui est actuellement activement développée par Microsoft, c’est donc une cible en mouvement. Les commentaires ci-dessous reflètent la version 1.4 de l’API en février 2017.
- Votre code s’exécute inchangé sur plusieurs points de terminaison.
- Mais cela peut entraîner le support du plus petit dénominateur commun
- Prend en charge les nombreux frameworks JavaScript
- Fonctionne mieux avec TypeScript
- Bon support Web
- Support Office Store
- S’exécute dans un processus de navigateur séparé
- Nécessite Internet: pas de capacité hors ligne
- Pas de support UDF actuellement
- Très mauvaises performances
- Destiné aux développeurs web professionnels
- Support du modèle objet
- Limité mais en expansion rapide
- Classeur unique uniquement: impossible de copier entre, d’ouvrir, de fermer ou d’enregistrer des classeurs
- Contrôle limité du calcul et de la mise à jour de l’écran
- Pas de Copier Coller Spécial
- Niveau Cloud hybride /Application/Classeur
- Traitement asynchrone par lots uniquement
Et ensuite ?
Mes prochains articles de blog sur JS se concentreront sur les performances de l’API JS.
Si vous souhaitez en savoir plus sur l’API JS, je vous recommande de créer des extensions Office par Michael Zlatkovsky, qui est un développeur de l’équipe d’extensibilité Microsoft Office.