Excel JavaScript API Część 1: Przegląd i porównanie

X

Prywatność & Pliki cookie

ta strona używa plików cookie. Kontynuując, zgadzasz się na ich użycie. Dowiedz się więcej, w tym jak kontrolować pliki cookie.

Mam!

Advertisements

od kilku miesięcy eksperymentuję z nowym API JavaScript Excel.

jest to pierwszy z zaplanowanej serii postów badających JS-API z punktu widzenia programisty Excel Office.

główną zaletą JS API jest to, że pozwala na pisanie kodu, który działa dla Windows Excel, Mac Excel, Excel Online i Excel na iOS. JS API jest nadal niedojrzały, ale jest w trakcie szybkiego rozwoju przez zespół rozszerzalności pakietu Microsoft Office, z nowymi wersjami API przybywających mniej więcej co kwartał.

interfejs API JS wykorzystuje oparte na przeglądarce technologie JavaScript / TypeScript oraz HTML i CSS. Jego główne cele to:

  • aby pracować w tak szerokim zakresie punktów końcowych (telefon komórkowy, tablet, Chmura, Komputer Stacjonarny).
  • aby dotrzeć do dzisiejszych programistów, którzy pracują głównie lub wyłącznie przy użyciu technologii internetowych .

API wykonuje się asynchronicznie przez kolejkowanie interakcji API z programem Excel, dopóki nie zażądasz ich wykonania w partii (kontekst.Sync()).

JavaScript& TypeScript

dla programistów VBA lub C JavaScript jest dziwnym, irytującym, ale zaskakująco potężnym językiem. Aby wymienić kilka różnic:

  • zmienne tak naprawdę nie mają typów i uwzględniają wielkość liter. Zakres zmiennych (zwany zakresem leksykalnym) jest poważnie dziwny i wydaje się często łapać nawet doświadczonych programistów JavaScript.
  • Tablice tak naprawdę nie są tablicami i mają tylko jeden wymiar, więc szybko dowiesz się o tablicach tablic. Nie mają stałych górnych granic i mogą być rzadkie. Mają potężne metody, takie jak mapowanie, zmniejszanie, krojenie i sortowanie. (Ale naprawdę trudno jest sprawić, by sortowanie tablic js działało tak samo jak sortowanie Excela!)
  • funkcje są pierwszej klasy-możesz je przekazywać jak zmienne-funkcje Anonymous / Lambda są w pełni obsługiwane – naprawdę musisz się nad tym zastanowić!
  • przetwarzanie asynchroniczne jest obsługiwane przez rzeczy zwane obietnicami, które mogą być połączone ze sobą z pewną trudnością (ta sytuacja jest znana jako piramida Zagłady)
  • JavaScript jako język wciąż zmienia się dość szybko i ma funkcje, które mogą lub nie mogą być obsługiwane przez poszczególne przeglądarki
  • popularność JavaScript jest częściowo związana i zasilana przez wiele bardzo potężnych i swobodnie dostępnych frameworków (JQuery, AngularJS, …)

nawiasem mówiąc, JavaScript nie jest wersją języka skryptowego Javy: jest to zupełnie inny język.

TypeScript jest próbą Microsoftu, aby naprawić niektóre z bardziej skandalicznych błędów JavaScript.
TypeScript jest w zasadzie Transpilerem – kompiluje TypeScript do JavaScript, więc prawie wszystko, co może wykonać JavaScript, może również wykonać transpilowany TypeScript.
dwie główne zalety maszynopisu to:

  • możesz przypisywać typy do zmiennych i mają sensowny zakres!
  • możesz użyć asynchronicznego oczekiwania zamiast obietnic, co sprawia, że Twój kod jest znacznie bardziej czytelny i unika piramidy Zagłady.

porównanie technologii interfejsu API programu Excel

Istnieją 4 główne rodziny interfejsów API programu Excel:

interfejs API programu Excel 'C’ XLL

ten interfejs API jest najbardziej zintegrowanym i najniższym publicznie dostępnym interfejsem programu Excel:

  • Najlepszy interfejs API
  • interfejs niskiego poziomu wymaga programowania w języku C i umiejętności zarządzania pamięcią.
  • Visual Studio IDE
  • działa w procesie Excela.
  • większość możliwości UDFs (wielowątkowe, asynchroniczne, RTD, klastry itp.)
  • obejmuje tylko podzbiór modelu obiektu Excel
  • ograniczona obsługa natywnego interfejsu użytkownika
  • używana jako warstwa podkładowa przez wiele innych produktów/platform/języków (XLL Plus C++, Excel DNA. NET, Addin Express.NET, PyXLL Python, Fcell F# …)
  • tylko Pulpit systemu Windows
  • tylko poziom dodatku aplikacji
  • może używać wszystkich frameworków C i C++ (standardowa biblioteka szablonów, BOOST …)

Excel COM i automatyzacja API

ten interfejs API jest najbogatszym i najczęściej używanym interfejsem API

  • języki podstawowe VBA i VB6
  • dobra wydajność
  • najszersze wsparcie dla modelu obiektowego
  • obsługuje jednowątkowe synchroniczne UDFs
  • działa w procesie Excela
  • Windows
  • komputery stacjonarne/laptopy Mac OS (ale VBA tylko z niektórymi
  • makro recorder zapewnia niski punkt wejścia
  • Wbudowany, ale starożytne IDE dla Windows VBA
  • może być osadzone w dokumencie lub używane jako dodatek na poziomie aplikacji.
  • VBA w dużej mierze niezmieniony od wielu lat i ma tylko ograniczony i umierający framework

COM-Interop API

to API dodaje dodatkową warstwę.NET interop na szczycie interfejsu COM/Automation. Idealnie byłoby to przydatne stopgap dopóki nie został opracowany odpowiedni interfejs. NET Excel, ale niestety nigdy tak się nie stało.

  • słaba wydajność
  • działa w oddzielnym procesie
  • obsługuje.NET framework i języki
  • tylko Windows
  • Visual Studio IDE
  • przede wszystkim poziom aplikacji, ale może być związany z dokumentem za pomocą VSTO
  • Nie nadaje się do UDFs
  • oferta Microsoftu to VSTO

produkty takie jak Excel dna i Addin Express obsługują zarówno COM-Interop. NET world, jak i API „C”, aby umożliwić właściwą obsługę UDF, poprawiając wydajność przy jednoczesnym zachowaniu bogactwa. net framework.

Excel JS-API Release 1.4

nowy dzieciak na bloku! Jest to API, które jest obecnie aktywnie rozwijane przez Microsoft, więc jest to bardzo ruchomy cel. Komentarze poniżej odzwierciedlają wersję 1.4 API według stanu na Luty 2017.

  • Twój kod działa bez zmian w wielu punktach końcowych.
    • ale może to skutkować NAJNIŻSZYM wspólnym mianownikiem
  • obsługuje wiele ram JavaScript
  • działa najlepiej z maszynopisem
  • dobra obsługa sieci Web
  • Obsługa Sklepu Office
  • działa w oddzielnym procesie przeglądarki
  • wymaga Internetu: Brak możliwości offline
  • Brak obsługi UDF obecnie
  • Bardzo słaba wydajność
  • skierowany do profesjonalnych programistów internetowych
  • Obsługa modeli obiektowych
    • ograniczony, ale szybko rozwijający się
    • tylko pojedynczy skoroszyt: nie można kopiować między, otwierać, zamykać lub zapisywać skoroszytów
    • ograniczona Kontrola obliczeń i aktualizacji ekranu
    • nie kopiuj wklej specjalne
  • poziom chmury hybrydowej/aplikacji / skoroszytu
  • tylko przetwarzanie asynchroniczne wsadowe

co dalej?

moje kolejne posty na blogu o JS skupią się na wydajności JS-API.

jeśli chcesz dowiedzieć się więcej o JS-API polecam budowanie Office Addins autorstwa Michaela Zlatkovsky ’ ego, który jest programistą w zespole Microsoft Office Extensibility.

You might also like

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.