Privacy & Cookie
Questo sito utilizza cookie. Continuando, accetti il loro utilizzo. Ulteriori informazioni, tra cui come controllare i cookie.
Ho trascorso del tempo negli ultimi mesi a sperimentare con la nuova API JavaScript Excel.
Questo è il primo di una serie pianificata di post che esaminano la JS-API dal punto di vista di uno sviluppatore di Excel Office.
Il vantaggio principale dell’API JS è che consente di scrivere codice che funziona per Windows Excel, Mac Excel, Excel Online ed Excel su IOS. L’API JS è ancora immaturo, ma sta subendo un rapido sviluppo da parte del team di estensibilità di Microsoft Office, con nuove versioni dell’API che arrivano approssimativamente trimestralmente.
L’API JS utilizza tecnologie JavaScript/TypeScript basate su browser e HTML e CSS. I suoi obiettivi principali sono:
- Per lavorare su una così ampia varietà di end-point (mobile, tablet, cloud, desktop).
- Per indirizzare gli sviluppatori di oggi che lavorano principalmente o esclusivamente utilizzando tecnologie web .
L’API viene eseguita in modo asincrono accodando le interazioni API con Excel fino a quando non viene richiesta l’esecuzione in un batch (Contesto.Sincronizzazione()).
JavaScript &TypeScript
Per gli sviluppatori VBA o C JavaScript è un linguaggio strano, esasperante ma sorprendentemente potente. Per citare alcune differenze:
- Le variabili non hanno realmente Tipi e sono case sensitive. L’ambito delle variabili (chiamato Ambito lessicale) è seriamente strano e sembra spesso catturare anche gli sviluppatori JavaScript esperti.
- Gli array non sono realmente array e hanno solo una dimensione, quindi apprendi rapidamente gli array di array. Non hanno limiti superiori fissi e possono essere sparsi. Hanno metodi potenti come MAP, REDUCE, SLICE e SORT. (Ma è davvero difficile fare in modo che l’ordinamento dell’array JS funzioni allo stesso modo di un ordinamento Excel!)
- Le funzioni sono cittadini di prima classe-puoi passarle in giro come variabili-Le funzioni Anonime/Lambda sono pienamente supportate-devi davvero capirlo!
- elaborazione Asincrona è gestito da cose chiamate Promesse che possono essere concatenate con qualche difficoltà (questa situazione è conosciuta come la Piramide di Doom)
- JavaScript come linguaggio sta cambiando molto velocemente e ha caratteristiche che possono o non possono essere supportati da un particolare browser
- JavaScript popolarità è in parte legato e alimentato da numerosi e molto potenti e liberamente disponibile framework (JQuery, AngularJS, …)
E dal modo in cui JavaScript non è un linguaggio di script versione di Java: Java è un linguaggio completamente diverso.
TypeScript è un tentativo di Microsoft di risolvere alcuni dei più eclatanti errori JavaScript.
TypeScript è fondamentalmente un Transpiler: compila TypeScript in JavaScript in modo che qualsiasi cosa possa eseguire JavaScript possa anche eseguire TypeScript transpiled.
Due principali vantaggi di TypeScript sono:
- È possibile assegnare i tipi alle variabili e hanno un ambito ragionevole!
- Puoi usare Async Await invece di Promises che rende il tuo codice molto più leggibile ed evita la Piramide di Doom.
Excel API Technologies Compared
Esistono 4 famiglie principali di API Excel:
Excel ‘C’ XLL API
Questa API è l’interfaccia più strettamente integrata e più bassa disponibile pubblicamente per Excel:
- Best performing API
- Interfaccia di basso livello richiede C programmazione e capacità di gestione della memoria.
- Visual Studio IDE
- Viene eseguito nel processo Excel.
- La maggior parte delle funzionalità per UDFs (multi-threaded, asynchronous, RTD, Cluster ecc.)
- Copre solo un sottoinsieme del modello a oggetti Excel
- Supporto UI nativo limitato
- Utilizzato come livello di base da molti altri prodotti/piattaforme/linguaggi (XLL Plus C++, Excel DNA .NET, Addin Express.NET, PyXLL Python, FCell F# …)
- Windows Desktop solo
- Applicazione addin solo a livello di
- Possibile utilizzare tutte le C e C++ framework (Standard Template Library, il BOOST …)
COM di Excel e API di Automazione
Questa API è il più ricco e il più ampiamente usato API
- Primaria linguaggi VB6 e VBA
- Buone prestazioni
- più Ampio modello a oggetti di supporto
- Supporta single-threaded sincrono Fsu
- viene Eseguito nel Processo di Excel
- Windows
- Mac OS Desktop/Laptop (ma VBA solo con alcuni
- Macro recorder fornisce un punto di ingresso basso
- IDE integrato ma antico per Windows VBA
- Può essere incorporato in un documento o utilizzato come addin a livello di applicazione.
- VBA in gran parte invariato per molti anni e ha solo un framework limitato e morente
API COM-Interop
Questa API aggiunge un ulteriore livello di interoperabilità.NET in cima all’interfaccia COM/Automation. Idealmente questo sarebbe stato un utile stopgap fino a quando non fosse stata sviluppata una corretta interfaccia. NET Excel, ma purtroppo non è mai successo.
- Poveri prestazioni
- viene Eseguito in un processo separato
- Supporta .NET framework e linguaggi
- solo per Windows
- IDE di Visual Studio
- Principalmente a livello di applicazione, ma può essere associato a un documento utilizzando VSTO
- Non adatto per i Fsu
- offerta di Microsoft è VSTO
Prodotti come Excel DNA e Add-in Express supportare sia l’Interoperabilità COM .NET world e la ‘C’ API per consentire il corretto supporto UDF, il miglioramento delle prestazioni, pur mantenendo la ricchezza di .NET framework.
Versione JS-API di Excel 1.4
Il nuovo ragazzo sul blocco! Questa è l’API che è attualmente in fase di sviluppo attivamente da Microsoft, quindi è molto un bersaglio in movimento. I commenti qui sotto riflettono la versione 1.4 dell’API a febbraio 2017.
- Il codice viene eseguito invariato su più endpoint.
- Ma questo può risultare in un minimo comune denominatore di supporto
- Supporta numerosi framework JavaScript
- Funziona meglio con Dattiloscritto
- Buon Supporto Web
- Ufficio Negozio support
- viene Eseguito in un browser separata processo
- Richiede Internet: non in linea capacità
- Nessun supporto UDF attualmente
- prestazioni Molto scarse
- Mirate a professionisti e sviluppatori web
- Oggetto il supporto del modello
- Limitata, ma in rapida espansione
- Singola cartella di lavoro solo: impossibile copiare tra, aprire, chiudere o salvare cartelle di lavoro
- Controllo limitato del calcolo e dell’aggiornamento dello schermo
- Nessuna copia Incolla speciale
- Livello di cloud ibrido / Applicazione / cartella di lavoro
- Solo elaborazione asincrona in batch
Quale sarà il prossimo?
I miei prossimi post del blog su JS si concentreranno sulle prestazioni della JS-API.
Se vuoi saperne di più sulla JS-API ti consiglio di costruire Addins per ufficio da Michael Zlatkovsky, che è uno sviluppatore del team di estensibilità di Microsoft Office.