Datenschutz & Cookies
Diese Seite verwendet Cookies. Indem Sie fortfahren, stimmen Sie deren Verwendung zu. Erfahren Sie mehr, einschließlich der Kontrolle von Cookies.
Ich habe in den letzten Monaten viel Zeit damit verbracht, mit der neuen JavaScript Excel API zu experimentieren.
Dies ist der erste einer geplanten Reihe von Beiträgen, die die JS-API aus der Sicht eines Excel-Office-Entwicklers untersuchen.
Der Hauptvorteil der JS-API besteht darin, dass Sie Code schreiben können, der für Windows Excel, Mac Excel, Excel Online und Excel unter IOS funktioniert. Die JS-API ist noch unreif, wird jedoch vom Microsoft Office Extensibility-Team rasch weiterentwickelt, wobei neue Versionen der API ungefähr vierteljährlich eintreffen.
Die JS-API verwendet browserbasiertes JavaScript/TypeScript sowie HTML- und CSS-Technologien. Seine Hauptziele sind:
- Für die Arbeit an einer Vielzahl von Endpunkten (Mobil, Tablet, Cloud, Desktop).
- Um die heutigen Entwickler anzusprechen, die hauptsächlich oder ausschließlich mit Webtechnologien arbeiten .
Die API wird asynchron ausgeführt, indem die API-Interaktionen mit Excel in die Warteschlange gestellt werden, bis Sie die Ausführung in einem Batch-Kontext anfordern.Sync()).
JavaScript & TypeScript
Für VBA- oder C-Entwickler ist JavaScript eine seltsame, ärgerliche, aber überraschend mächtige Sprache. Um ein paar Unterschiede zu erwähnen:
- Variablen haben keine Typen und unterscheiden zwischen Groß- und Kleinschreibung. Der Bereich der Variablen (lexikalischer Bereich genannt) ist ernsthaft seltsam und scheint selbst erfahrene JavaScript-Entwickler oft zu fangen.
- Arrays sind nicht wirklich Arrays und haben nur eine Dimension, so dass Sie schnell etwas über Arrays von Arrays lernen. Sie haben keine festen Obergrenzen und können spärlich sein. Sie verfügen über leistungsstarke Methoden wie MAP, REDUCE, SLICE und SORT . (Aber es ist wirklich schwierig, die JS-Array-Sortierung genauso zu gestalten wie eine Excel-Sortierung!)
- Funktionen sind Bürger erster Klasse – Sie können sie wie Variablen weitergeben – Anonyme / Lambda-Funktionen werden vollständig unterstützt – Sie müssen sich wirklich darum kümmern!
- Asynchrone Verarbeitung wird durch sogenannte Versprechen gehandhabt, die mit einigen Schwierigkeiten verkettet werden können (diese Situation ist als Pyramide des Schicksals bekannt)
- JavaScript als Sprache ändert sich immer noch ziemlich schnell und verfügt über Funktionen, die von bestimmten Browsern unterstützt werden können oder nicht
- Die Popularität von JavaScript ist teilweise mit den vielen sehr leistungsfähigen und frei verfügbaren Frameworks (jQuery, AngularJS, …)
Übrigens ist JavaScript keine Skriptsprachversion von Java: Es ist eine völlig andere Sprache.
TypeScript ist ein Versuch von Microsoft, einige der schwerwiegenderen JavaScript-Fehler zu beheben.
TypeScript ist im Grunde ein Transpiler – es kompiliert TypeScript in JavaScript, so dass fast alles, was JavaScript ausführen kann, auch transpiliertes TypeScript ausführen kann.
Zwei wesentliche Vorteile von TypeScript sind:
- Sie können Variablen Typen zuweisen und sie haben einen vernünftigen Umfang!
- Sie können Async Await anstelle von Versprechen verwenden, wodurch Ihr Code viel lesbarer wird und die Pyramide des Schicksals vermieden wird.
Excel API-Technologien im Vergleich
Es gibt 4 Hauptfamilien von Excel-APIs:
Excel ‚C‘ XLL API
Diese API ist die am engsten integrierte und niedrigste öffentlich verfügbare Schnittstelle zu Excel:
- Beste Leistung API
- Low-Level-Schnittstelle erfordert C-Programmierung und Speicherverwaltungsfähigkeiten.
- Visual Studio IDE
- Wird im Excel-Prozess ausgeführt.
- Die meisten Funktionen für UDFs (Multithread, asynchron, RTD, Cluster usw.)
- Deckt nur eine Teilmenge des Excel-Objektmodells ab
- Eingeschränkte native UI-Unterstützung
- Wird von vielen anderen Produkten / Plattformen / Sprachen (XLL Plus C ++, Excel, .NET, Addin Express.NET, PyXLL Python, FCell F # …)
- Nur Windows-Desktop
- Nur Anwendungs-Addin-Ebene
- Kann alle C- und C ++ – Frameworks verwenden (Standardvorlagenbibliothek, BOOST …)
Excel COM und Automation API
Diese API ist die reichste und am weitesten verbreitete API
- Primärsprachen VBA und VB6
- Gute Leistung
- Breiteste Objektmodellunterstützung
- Unterstützt synchrone UDFs mit einem Thread
- Läuft im Excel-Prozess
- Windows
- Mac OS Desktops / Laptops (aber VBA nur mit einigen unterschiede zu Windows VBA)
- Macro Recorder bietet einen niedrigen Einstiegspunkt
- Integrierte, aber alte IDE für Windows VBA
- Kann in ein Dokument eingebettet oder als Addin auf Anwendungsebene verwendet werden.
- VBA seit vielen Jahren weitgehend unverändert und hat nur ein begrenztes und sterbendes Framework
COM-Interop API
Diese API fügt der COM / Automation-Schnittstelle eine zusätzliche .NET-Interop-Ebene hinzu. Im Idealfall wäre dies eine nützliche Notlösung gewesen, bis eine richtige .NET Excel-Schnittstelle entwickelt wurde, aber leider ist das nie passiert.
- Schlechte Leistung
- Läuft in separatem Prozess
- Unterstützt .NET Framework und Sprachen
- Nur Windows
- Visual Studio IDE
- Hauptsächlich Anwendungsebene, kann aber mit VSTO an ein Dokument gebunden werden
- Nicht geeignet für UDFs
- Microsofts Angebot ist VSTO
Produkte wie Excel DNA und Addin Express unterstützen sowohl die COM-Interop .NET-Welt als auch die ‚C‘ -API, um eine ordnungsgemäße UDF-Unterstützung zu ermöglichen, die Leistung zu verbessern und gleichzeitig den Reichtum des .NET-Frameworks beizubehalten.
Excel JS-API Veröffentlichung 1.4
Das neue Kind auf dem Block! Dies ist die API, die derzeit aktiv von Microsoft entwickelt wird, so ist es sehr viel ein bewegliches Ziel. Die folgenden Kommentare spiegeln die Version 1.4 der API vom Februar 2017 wider.
- Ihr Code wird unverändert auf mehreren Endpunkten ausgeführt.
- Dies kann jedoch zur Unterstützung des kleinsten gemeinsamen Nenners führen
- Unterstützt die vielen JavaScript-Frameworks
- Funktioniert am besten mit TypeScript
- Gute Webunterstützung
- Office Store-Unterstützung
- Läuft in einem separaten Browserprozess
- Benötigt Internet: keine Offline-Fähigkeit
- Derzeit keine UDF-Unterstützung
- Sehr schlechte Leistung
- Richtet sich an professionelle Webentwickler
- Objektmodellunterstützung
- Begrenzt, aber schnell wachsend
- Nur einzelne Arbeitsmappe: Arbeitsmappen können nicht zwischen Arbeitsmappen kopiert, geöffnet, geschlossen oder gespeichert werden
- Eingeschränkte Berechnungs- und Bildschirmaktualisierungssteuerung
- Kein Kopieren Einfügen Spezial
- Hybrid Cloud / Anwendungs- / Arbeitsmappenebene
- Nur Batch-asynchrone Verarbeitung
Was kommt als nächstes?
Meine nächsten Blogbeiträge zu JS werden sich auf die Leistung der JS-API konzentrieren.
Wenn Sie mehr über die JS-API erfahren möchten, empfehle ich, Office-Addins von Michael Zlatkovsky zu erstellen, der Entwickler im Microsoft Office Extensibility Team ist.