Excel JavaScript API Del 1: Oversikt & Sammenligning

X

Personvern & Informasjonskapsler

dette nettstedet bruker informasjonskapsler. Ved å fortsette godtar du bruken av dem. Lær mer, inkludert hvordan du kontrollerer informasjonskapsler.

Fikk Det!

Annonser

jeg har brukt tid de siste månedene på å eksperimentere med den nye JavaScript Excel API.

Dette er den første av en planlagt serie innlegg som undersøker JS-API fra Et Excel Office-utviklers synspunkt.

den største fordelen MED JS API er at den lar deg skrive kode som fungerer For Windows Excel, Mac Excel, Excel Online Og Excel PÅ IOS. JS API er fortsatt umoden, men gjennomgår rask utvikling Av Microsoft Office Extensibility team, med nye utgivelser AV API kommer omtrent kvartalsvis.

JS API bruker nettleserbasert JavaScript / TypeScript og HTML og CSS teknologier. De viktigste målene er:

  • for å arbeide på tvers av et så bredt utvalg av endepunkter(mobil, nettbrett, sky, skrivebord).
  • For å målrette dagens utviklere som jobber hovedsakelig eller utelukkende ved hjelp av webteknologi .

API-en utfører asynkront ved å kjøre API-interaksjonene Med Excel til du ber om at DE skal utføres i en satsvis (Kontekst.Sync()).

JavaScript & TypeScript

For vba eller C utviklere JavaScript Er en merkelig, exasperating men overraskende kraftig språk. For å nevne noen forskjeller:

  • Variabler har egentlig Ikke Typer og er saksfølsomme. Omfanget av variabler (Kalt Leksikalsk Omfang) er seriøst rart og ser ut til å ofte fange ut selv erfarne JavaScript-utviklere.
  • Arrays er egentlig ikke arrays og har bare en dimensjon, så du lærer raskt om arrays av arrays. De har ikke faste øvre grenser og kan være sparsomme. De har kraftige metoder SOM KART, REDUSERE, SKIVE og SORTERE. (Men det er veldig vanskelig å få JS array sorter på samme måte som En Excel-sortering!)
  • Funksjoner er førsteklasses borgere-du kan passere dem rundt som variabler-Anonym / Lambda funksjoner støttes fullt ut-du virkelig trenger å få hodet rundt dette!
  • Asynkron behandling håndteres av Ting som kalles Løfter som kan lenkes sammen med noen problemer (denne situasjonen er kjent Som Pyramid Of Doom)
  • JavaScript som et språk endrer seg fortsatt ganske raskt og har funksjoner som kanskje eller ikke støttes av bestemte nettlesere
  • JavaScript popularitet er delvis bundet opp med og matet av de mange svært kraftige og fritt tilgjengelige rammene (JQuery, AngularJS, …)

Og Forresten JavaScript Er ikke et skript språk versjon Av Java: det er et helt annet språk.

TypeScript er Et Forsøk Av Microsoft for å fikse Noen av De mer ekstreme JavaScript-feilene.
TypeScript er i utgangspunktet En Transpiler – det kompilerer TypeScript I JavaScript, slik at omtrent alt som kan utføre JavaScript kan også utføre transpiled TypeScript.
To store fordeler Med TypeScript er:

  • Du kan tilordne Typer til variabler og de har fornuftig omfang!
  • Du kan bruke Async Await i stedet For Løfter som gjør koden din mye mer lesbar og unngår Pyramid Of Doom.

Excel API-Teknologier Sammenlignet

Det er 4 hovedfamilier Av Excel-Apier:

Excel ‘C’ XLL API

DENNE API-EN Er Det tettest integrerte og laveste offentlig tilgjengelige grensesnittet Til Excel:

  • API
  • Grensesnitt På Lavt nivå krever C-programmering og minnehåndtering.
  • Visual Studio IDE
  • Kjører I Excel-Prosessen.
  • de fleste muligheter For UDFs(multi-threaded, asynchronous, RTD, Cluster etc)
  • dekker Bare et delsett Av Excel-Objektmodellen
  • Begrenset innfødt UI-støtte
  • Brukes som et fundamentlag av mange andre produkter/plattformer / språk (XLL Pluss C++, Excel DNA .NET, Addin Express.NET, PyXLL Python, Fcell F#…)
  • Bare Windows-Skrivebordet
  • Søknad addin nivå bare
  • kan bruke Alle c og C++ rammer (Standard Mal Bibliotek, BOOST …)

Excel COM Og Automatisering API

DENNE API er den rikeste OG mest brukte API

  • Primære språk VBA og VB6
  • God ytelse
  • Bredeste objektmodell støtte
  • Støtter enkelttrådede synkrone UDFs
  • Kjører I Excel-Prosessen
  • windows
  • mac os stasjonære/bærbare datamaskiner (men vba bare med noen Macro recorder gir lav inngangspunkt
  • Innebygd, Men gamle IDE For Windows VBA
  • kan bygges inn i et dokument eller brukes som en addin på programnivå.
  • VBA stort sett uendret i mange år og har bare et begrenset og døende rammeverk

COM-Interop API

DENNE API legger til et ekstra. NET interop-lag på TOPPEN AV com / Automasjonsgrensesnittet. Ideelt sett ville dette vært et nyttig stoppested til et riktig.NET Excel-grensesnitt ble utviklet, MEN dessverre skjedde det aldri.

  • Dårlig ytelse
  • Kjører i separat prosess
  • Støtter.NET framework og språk
  • Bare Windows
  • Visual Studio IDE
  • Primært programnivå, Men Kan være bundet til et dokument ved HJELP AV VSTO
  • ikke egnet For UDFs
  • microsofts tilbud er vsto

produkter som excel dna og addin express støtter Både Com-INTEROP.

Excel JS-API Utgivelse 1.4

den nye gutten på blokken! DETTE ER API som for tiden blir aktivt utviklet Av Microsoft, så det er veldig mye et bevegelig mål. Kommentarer nedenfor gjenspeiler 1.4-Versjonen AV API fra februar 2017.

  • koden kjører uendret på tvers av flere endepunkter.
    • Men dette kan resultere i laveste fellesnevner støtte
  • Støtter De Mange JavaScript-rammene
  • Fungerer best Med TypeScript
  • God Webstøtte
  • Office Store-støtte
  • Kjører i en egen nettleserprosess
  • Krever Internett: ingen frakoblet evne
  • Ingen UDF-støtte for øyeblikket
  • svært dårlig ytelse
  • rettet mot profesjonelle webutviklere
  • Støtte For Objektmodell
    • Begrenset, Men Raskt Voksende
    • bare enkelt arbeidsbok: kan ikke kopiere mellom, åpne, lukke eller lagre arbeidsbøker
    • Begrenset kontroll Over Beregning Og Skjermoppdatering
    • Ingen Kopi Lim Spesiell
  • Hybrid Sky / Program / Arbeidsbok Nivå
  • Batched asynkron behandling bare

Hva Neste?

mine neste blogginnlegg PÅ JS vil fokusere på ytelsen TIL JS-API.

hvis du vil lære mer OM JS-API, anbefaler Jeg Building Office Addins av Michael Zlatkovsky, som er utvikler på Microsoft Office Extensibility-teamet.

You might also like

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.