Excel JavaScript API Del 1: Översikt & jämförelse

X

Sekretess & Cookies

denna webbplats använder cookies. Genom att fortsätta godkänner du deras användning. Läs mer, inklusive hur du kontrollerar cookies.

Fick Det!

annonser

jag har spenderat tid de senaste månaderna med att experimentera med det nya JavaScript Excel API.

Detta är den första av en planerad serie inlägg som undersöker JS-API ur en Excel-kontorsutvecklares synvinkel.

den största fördelen med JS API är att det låter dig skriva kod som fungerar för Windows Excel, Mac Excel, Excel Online och Excel på IOS. JS API är fortfarande omogen men genomgår snabb utveckling av Microsoft Office Extensibility team, med nya versioner av API anländer ungefär kvartalsvis.

JS API använder webbläsarbaserad JavaScript / TypeScript och HTML och CSS-teknik. Dess huvudsakliga mål är:

  • att arbeta över ett så stort antal slutpunkter (mobil, surfplatta, moln, skrivbord).
  • för att rikta dagens utvecklare som arbetar huvudsakligen eller uteslutande med webbteknik .

API körs asynkront genom att köa API-interaktionerna med Excel tills du begär att de ska köras i en batch (sammanhang.Synkronisera()).

JavaScript & TypeScript

för VBA-eller C-utvecklare är JavaScript ett konstigt, irriterande men förvånansvärt kraftfullt språk. För att nämna några skillnader:

  • variabler har egentligen inte Typer och är skiftlägeskänsliga. Omfattningen av variabler (kallad Lexical Scope) är allvarligt konstig och verkar ofta fånga ut även erfarna JavaScript-utvecklare.
  • Arrays är inte riktigt arrays och har bara en dimension, så du lär dig snabbt om arrays av arrays. De har inte fasta övre gränser och kan vara glesa. De har kraftfulla metoder som karta, minska, skiva och sortera. (Men det är verkligen svårt att få JS array att fungera på samma sätt som en Excel-sort!)
  • funktioner är förstklassiga medborgare-Du kan skicka dem som variabler-anonyma / Lambda-funktioner stöds fullt ut-du behöver verkligen få huvudet runt detta!
  • asynkron bearbetning hanteras av saker som kallas löften som kan kedjas ihop med vissa svårigheter (denna situation är känd som Pyramid of Doom)
  • JavaScript som språk förändras fortfarande ganska snabbt och har funktioner som kan eller inte kan stödjas av vissa webbläsare
  • JavaScript popularitet är delvis bunden till och matas av de många mycket kraftfulla och fritt tillgängliga ramarna( JQuery, AngularJS, …)

och förresten är JavaScript inte en skriptspråkversion av Java: det är ett helt annat språk.

TypeScript är ett försök från Microsoft att fixa några av de mer allvarliga JavaScript-misslyckandena.
TypeScript är i grunden en Transpiler – den sammanställer TypeScript i JavaScript så att nästan allt som kan utföra JavaScript också kan utföra transpilerat TypeScript.
två stora fördelar med TypeScript är:

  • du kan tilldela typer till variabler och de har förnuftig räckvidd!
  • du kan använda Async väntar istället för löften som gör din kod mycket mer läsbar och undviker Pyramid of Doom.

Excel API-teknik jämfört

det finns 4 huvudfamiljer av Excel API:

Excel ’ C ’ XLL API

detta API är det mest tätt integrerade och lägsta offentligt tillgängliga gränssnittet till Excel:

  • bäst presterande API
  • lågnivågränssnitt kräver C-programmering och minneshanteringsförmåga.
  • Visual Studio IDE
  • körs i Excel-processen.
  • mest kapacitet för UDF :er (multi-threaded, asynchronous, RTD, Cluster etc)
  • täcker bara en delmängd av Excel-objektmodellen
  • begränsat inbyggt UI-stöd
  • används som grundlager av många andra produkter/plattformar/språk (XLL Plus C++, Excel DNA .Net, Addin Express.Net, PyXLL Python, FCell F#…)
  • endast Windows-skrivbordet
  • ansökan addin nivå endast
  • kan använda alla C och C++ ramar (standardmall Bibliotek, BOOST …)

Excel COM och Automation API

detta API är det rikaste och mest använda API

  • primära språk VBA och VB6
  • bra prestanda
  • bredaste objektmodellstöd
  • stöder enkelgängade synkrona UDF: er
  • körs i Excel-processen
  • Windows
  • Mac OS Stationära/bärbara datorer (men VBA endast med vissa skillnader till Windows VBA)
  • Makroinspelare ger låg ingångspunkt
  • inbyggd men gammal IDE för Windows VBA
  • kan bäddas in i ett dokument eller användas som tillägg på applikationsnivå.
  • VBA i stort sett oförändrad under många år och har bara en begränsad och döende ram

COM-Interop API

detta API lägger till ett extra.Net interop-lager ovanpå com/Automation-gränssnittet. Helst skulle detta ha varit ett användbart stoppgap tills ett ordentligt. Net Excel-gränssnitt utvecklades, men tyvärr hände det aldrig.

  • dålig prestanda
  • körs i separat process
  • stöder.NET framework och språk
  • endast Windows
  • Visual Studio IDE
  • primärt applikationsnivå men kan bindas till ett dokument med VSTO
  • inte lämplig för UDF: er
  • Microsofts erbjudande är VSTO

produkter som Excel DNA och Addin Express stöder både COM-Interop. net-världen och ’C’ API för att möjliggöra korrekt UDF-stöd, Förbättrad prestanda samtidigt som. NET Framework-rikedomen bibehålls.

Excel JS-API Release 1.4

det nya barnet på blocket! Detta är det API som För närvarande utvecklas aktivt av Microsoft, så det är väldigt mycket ett rörligt mål. Kommentarer nedan återspeglar 1.4-versionen av API: et i februari 2017.

  • din kod körs oförändrad över flera slutpunkter.
    • men detta kan resultera i minsta gemensamma nämnare stöd
  • stöder de många JavaScript-ramarna
  • fungerar bäst med TypeScript
  • bra webbsupport
  • Office Store support
  • körs i en separat webbläsarprocess
  • Kräver Internet: ingen offline-kapacitet
  • inget UDF-stöd för närvarande
  • mycket dålig prestanda
  • riktad till professionella webbutvecklare
  • Objektmodellstöd
    • begränsad men snabbt expanderande
    • endast en arbetsbok: kan inte kopiera mellan, öppna, stänga eller spara arbetsböcker
    • begränsad kontroll av beräkning och skärmuppdatering
    • Ingen kopiering klistra in Special
  • Hybrid Cloud / Application / Workbook nivå
  • Batched asynkron bearbetning endast

vad nästa?

mina nästa blogginlägg på JS kommer att fokusera på prestanda för JS-API.

om du vill lära dig mer om JS-API rekommenderar jag att du bygger Office Addins av Michael Zlatkovsky, som är utvecklare i Microsoft Office Extensibility-teamet.

You might also like

Lämna ett svar

Din e-postadress kommer inte publiceras.