acest site folosește cookie-uri. Continuând, sunteți de acord cu utilizarea lor. Aflați mai multe, inclusiv cum să controlați cookie-urile.
am petrecut timp în ultimele luni experimentând noul API JavaScript Excel.
acesta este primul dintr-o serie planificată de posturi examinarea JS-API din punctul de vedere al unui dezvoltator de birou Excel.
principalul avantaj al API-ului JS este că vă permite să scrieți cod care funcționează Pentru Windows Excel, Mac Excel, Excel Online și Excel pe IOS. API-ul JS este încă imatur, dar este în curs de dezvoltare rapidă de către echipa de extensibilitate Microsoft Office, noile versiuni ale API ajungând aproximativ trimestrial.
API-ul JS utilizează tehnologii JavaScript/TypeScript și HTML și CSS bazate pe browser. Obiectivele sale principale sunt:
- pentru a lucra într-o varietate atât de mare de puncte finale (mobil, tabletă, cloud, desktop).
- pentru a viza dezvoltatorii de astăzi care lucrează în principal sau exclusiv folosind tehnologii web .
API-ul execută asincron de așteptare până interacțiunile API cu Excel până când solicitați să fie executate într-un lot (Context.Sincronizare ()).
JavaScript & TypeScript
pentru dezvoltatorii VBA sau C JavaScript este un limbaj ciudat, exasperant, dar surprinzător de puternic. Pentru a menționa câteva diferențe:
- variabilele nu au într-adevăr tipuri și sunt sensibile la majuscule. Domeniul de aplicare al variabilelor (numit domeniul Lexical) este serios ciudat și pare să prindă adesea chiar și dezvoltatorii JavaScript experimentați.
- tablourile nu sunt cu adevărat Tablouri și au o singură dimensiune, așa că învățați rapid despre tablourile de tablouri. Nu au limite superioare fixe și pot fi rare. Ei au metode puternice, cum ar fi harta, REDUCE, felie, și sortare. (Dar sa foarte greu pentru a face JS array fel de lucru în același mod ca un fel Excel!)
- funcțiile sunt cetățeni de primă clasă – le puteți transmite ca variabile – funcțiile anonime / Lambda sunt pe deplin acceptate – chiar trebuie să vă dați capul în jurul acestui lucru!
- procesarea asincronă este gestionată de lucruri numite promisiuni care pot fi înlănțuite împreună cu unele dificultăți(această situație este cunoscută sub numele de Piramida doomului)
- JavaScript ca limbă se schimbă încă destul de rapid și are caracteristici care pot sau nu să fie acceptate de anumite browsere
- popularitatea JavaScript este parțial legată și alimentată de multe cadre foarte puternice și disponibile gratuit (JQuery, AngularJS, …)
și apropo JavaScript nu este o versiune de limbaj script de Java: este un limbaj complet diferit.
TypeScript este o încercare a Microsoft de a remedia unele dintre cele mai flagrante eșecuri JavaScript.
TypeScript este practic un Transpiler-compilează TypeScript în JavaScript, astfel încât aproape orice poate executa JavaScript poate executa, de asemenea, transpiled TypeScript.
două avantaje majore ale TypeScript sunt:
- puteți atribui tipuri de variabile și au domeniu de aplicare sensibil!
- puteți utiliza asincron așteaptă în loc de promisiuni care face codul mult mai ușor de citit și evită Piramida Doom.
Excel API Technologies comparativ
există 4 familii principale de API-uri Excel:
Excel ‘ c ‘ XLL API
acest API este cel mai bine integrat și cel mai mic interfață disponibilă publicului pentru Excel:
- cea mai bună performanță API
- interfață de nivel scăzut necesită programare C și abilități de gestionare a memoriei.
- Visual Studio IDE
- rulează în procesul Excel.
- cea mai mare capacitate pentru UDFs (multi-threaded, asincron, RTD, Cluster etc)
- acoperă doar un subset al modelului de obiect Excel
- suport UI nativ limitat
- folosit ca strat de fundație de multe alte produse/platforme/limbi (Xll Plus C++, Excel ADN .net, Addin Express.NET, PyXLL Python, FCell F# …)
- Windows Desktop numai
- cerere addin nivel numai
- pot folosi toate C și C++ cadre (Biblioteca șablon standard, BOOST …)
Excel COM și automatizare API
acest API este cel mai bogat și cel mai utilizat pe scară largă API
- limbi primare VBA și VB6
- performanță bună
- cel mai larg suport model de obiect
- acceptă udfs sincrone cu un singur fir
- rulează în procesul Excel
- Windows
- Mac OS desktop-uri/laptop-uri (dar VBA numai cu unele diferențe față de Windows VBA)
- Macro recorder oferă un punct de intrare scăzut
- IDE încorporat, dar antic pentru Windows vba
- poate fi încorporat într-un document sau utilizat ca addin la nivel de aplicație.
- VBA în mare parte neschimbat de mai mulți ani și are doar un cadru limitat și moarte
COM-Interop API
acest API adaugă un strat suplimentar.net interop pe partea de sus a interfeței COM/automatizare. În mod ideal, aceasta ar fi fost o oprire utilă până când a fost dezvoltată o interfață.net Excel adecvată, dar, din păcate, acest lucru nu s-a întâmplat niciodată.
- performanță slabă
- rulează în proces separat
- suportă.NET framework și limbi
- numai Windows
- Visual Studio IDE
- în primul rând nivel de aplicație, dar poate fi legat la un document folosind VSTO
- nu este potrivit pentru UDFs
- oferta Microsoft este VSTO
produse precum Excel ADN și Addin Express acceptă atât COM-Interop. net world, cât și API-ul ‘C’ pentru a permite suportul UDF adecvat, performanță îmbunătățită, păstrând în același timp bogăția. net framework.
Excel JS-API Release 1.4
noul copil de pe bloc! Acesta este API-ul care este în prezent dezvoltat activ de Microsoft, deci este foarte mult o țintă în mișcare. Comentariile de mai jos reflectă versiunea 1.4 a API în februarie 2017.
- codul dvs. rulează neschimbat pe mai multe puncte finale.
- dar acest lucru poate duce la cel mai mic sprijin numitor comun
- suportă multe cadre JavaScript
- funcționează cel mai bine cu TypeScript
- Suport Web bun
- suport Magazin Office
- rulează într-un proces de browser separat
- necesită Internet: fără capacitate offline
- fără suport UDF în prezent
- performanță foarte slabă
- destinate dezvoltatorilor web profesionale
- suport Model de obiect
- limitat, dar rapid extinderea
- registru de lucru unic numai: nu se poate copia între, deschide, închide sau salva registre de lucru
- control limitat de calcul și ecran actualizarea
- nu copy Paste speciale
- Hybrid Cloud/Application / Workbook Level
- numai procesare asincronă dozată
ce urmează?
următoarele mele postări pe blog pe JS se vor concentra pe performanța JS-API.
dacă doriți să aflați mai multe despre JS-API, vă recomand să construiți Office Addins de Michael Zlatkovsky, care este dezvoltator în echipa de extensibilitate Microsoft Office.