ez az oldal cookie-kat használ. A folytatással elfogadja azok használatát. Tudj meg többet, beleértve a cookie-k kezelésének módját is.
az elmúlt hónapokban időt töltöttem az új JavaScript Excel API kísérletezésével.
ez az első olyan tervezett bejegyzéssorozat, amely a JS-API-t vizsgálja egy Excel Office Fejlesztő szempontjából.
a JS API fő előnye, hogy lehetővé teszi a Windows Excel, Mac Excel, Excel Online és Excel iOS rendszeren működő kód írását. A JS API még mindig éretlen, de a Microsoft Office bővíthetőség csapata gyorsan fejleszti, az API új kiadásai nagyjából negyedévente érkeznek.
a JS API böngésző alapú JavaScript/TypeScript és HTML és CSS technológiákat használ. Fő célkitűzései a következők:
- a munka az egész ilyen sokféle végpontok (mobil, tablet, felhő, asztali).
- a mai fejlesztőket célozza meg, akik elsősorban vagy kizárólag webes technológiákat használnak .
az API aszinkron módon hajtja végre az API-interakciók sorba állításával az Excel programmal, amíg nem kéri, hogy kötegben (kontextusban) hajtsák végre őket.Szinkronizálás ()).
JavaScript & TypeScript
VBA vagy C fejlesztők számára a JavaScript egy furcsa, elkeserítő, de meglepően erős nyelv. Néhány különbség megemlítése:
- a változóknak valójában nincs típusuk és nagybetűk érzékenyek. A változók hatóköre (az úgynevezett lexikális hatókör) komolyan furcsa, és úgy tűnik, hogy gyakran elkapja még a tapasztalt JavaScript fejlesztőket is.
- a tömbök valójában nem tömbök, és csak egy dimenzióval rendelkeznek, így gyorsan megismerheti a tömbök tömbjeit. Nincsenek rögzített felső határaik, és ritkák lehetnek. Olyan hatékony módszerekkel rendelkeznek, mint a térkép, A REDUCE, A SLICE és a SORT. (De nagyon nehéz, hogy a JS tömb rendezés ugyanúgy működjön, mint egy Excel rendezés!)
- funkciók első osztályú polgárok – akkor át őket körül, mint a változók – Anonymous/Lambda funkciók teljes mértékben támogatott – tényleg szükség van, hogy a fejed körül ezt!
- az aszinkron feldolgozást az ígéretek nevű dolgok kezelik, amelyeket némi nehézséggel össze lehet láncolni (ezt a helyzetet a végzet piramisának nevezik)
- a JavaScript, mivel a nyelv még mindig meglehetősen gyorsan változik, és olyan funkciókkal rendelkezik, amelyeket bizonyos böngészők támogathatnak vagy nem támogathatnak
- a JavaScript népszerűségét részben a sok nagyon erős és szabadon elérhető keretrendszer (JQuery, AngularJS, …)
egyébként a JavaScript nem a Java szkript nyelvi változata: ez egy teljesen más nyelv.
TypeScript egy kísérlet a Microsoft kijavítani néhány kirívó JavaScript hibák.
a TypeScript alapvetően egy Transzpiler – lefordítja a TypeScript-et JavaScript-be, így szinte bármi, ami végrehajthatja a Javascriptet, végrehajthatja az transpiled TypeScript-et is.
a TypeScript két fő előnye:
- a változókhoz típusokat rendelhet, és ésszerű hatókörük van!
- az ígéretek helyett használhatod az async Waitet, ami sokkal olvashatóbbá teszi a kódodat, és elkerüli a végzet piramisát.
Excel API technológiák összehasonlítása
az Excel API-k 4 fő családja van:
Excel ‘ C ‘ XLL API
ez az API a legszorosabban integrált és legalacsonyabb nyilvánosan elérhető felület az Excel számára:
- a legjobban teljesítő API
- az alacsony szintű interfész C programozási és memóriakezelési készségeket igényel.
- Visual Studio IDE
- fut az Excel folyamatban.
- az UDFs (többszálú, aszinkron, RTD, klaszter stb.) legtöbb képessége
- csak az Excel objektummodell egy részhalmazát fedi le
- Korlátozott natív UI támogatás
- sok más termék/platform/nyelv (XLL Plus C++, Excel DNA. Net, Addin Express.NET, PyXLL Python, FCell F# …)
- Windows Desktop csak
- Application addin szint csak
- használhatja az összes C és C++ keretrendszer (Standard Template Library, BOOST …)
Excel COM és automatizálási API
ez az API a leggazdagabb és legszélesebb körben használt API
- elsődleges nyelvek VBA és VB6
- jó teljesítmény
- legszélesebb objektum modell támogatás
- támogatja az egyszálú szinkron UDFs
- fut az Excel folyamat
- Windows
- Mac OS asztali/laptopok (de VBA csak néhány különbségek a Windows VBA-hoz képest)
- a Macro recorder alacsony belépési pontot biztosít
- beépített, de az ősi IDE for Windows VBA
- beágyazható egy dokumentumba, vagy alkalmazásszinten kiegészítőként használható.
- a VBA sok éve változatlan, és csak korlátozott és haldokló keretrendszerrel rendelkezik
COM-Interop API
ez az API egy további.Net interop réteget ad a COM/Automation interfész tetejére. Ideális esetben ez hasznos stopgap lett volna, amíg egy megfelelő.net Excel felületet nem fejlesztettek ki, de sajnos ez soha nem történt meg.
- gyenge teljesítmény
- külön folyamatban fut
- támogatja a.net-keretrendszert és a nyelveket
- csak Windows alatt
- Visual Studio IDE
- elsősorban alkalmazásszintű, de a VSTO
- nem alkalmas UDFs-re
- a Microsoft kínálata a VSTO
az olyan termékek, mint az Excel DNA és az Addin Express támogatják mind a COM-Interop. Net világot, mind a ‘c’ API-t, hogy lehetővé tegyék a megfelelő UDF támogatást, a jobb teljesítményt, miközben megőrzik a. NET-keretrendszer gazdagságát.
Excel JS-API kiadás 1.4
az új gyerek a blokk! Ez az API, amelyet a Microsoft jelenleg aktívan fejleszt, tehát nagyon mozgó célpont. Az alábbi megjegyzések az API 1.4-es verzióját tükrözik 2017 februárjában.
- a kód változatlanul fut több végponton.
- de ez a legkisebb közös nevező támogatást eredményezheti
- támogatja a sok JavaScript keretek
- működik a legjobban TypeScript
- jó webes támogatás
- Office Store támogatás
- fut egy külön böngésző folyamat
- igényel Internet: nincs offline képesség
- nincs UDF támogatás jelenleg
- nagyon gyenge teljesítmény
- célzott szakmai webfejlesztők
- objektum modell támogatás
- korlátozott, de gyorsan bővülő
- egyetlen munkafüzet csak: nem lehet másolni a munkafüzetek között, megnyitni, bezárni vagy menteni
- a számítás és a Képernyőfrissítés Korlátozott ellenőrzése
- nincs Copy Paste Special
- hibrid felhő / alkalmazás / munkafüzet szint
- csak szakaszos aszinkron feldolgozás
mi a következő lépés?
a következő js blogbejegyzéseim a JS-API teljesítményére összpontosítanak.
ha többet szeretne megtudni a JS-API-ról, azt javaslom, hogy Michael Zlatkovsky, a Microsoft Office bővíthetőségi csapatának fejlesztője építse az Office Addins-t.