API de JavaScript de Excel Parte 1: Descripción general y comparación

X

Privacidad & Cookies

Este sitio utiliza cookies. Al continuar, usted acepta su uso. Obtenga más información, incluido cómo controlar las cookies.

¡Lo tengo!

Anuncios

he estado pasando tiempo en los últimos meses experimentando con el nuevo JavaScript Excel API.

Esta es la primera de una serie planificada de publicaciones que examinan la JS-API desde el punto de vista de un desarrollador de Excel Office.

La principal ventaja de la API de JS es que le permite escribir código que funciona para Windows Excel, Mac Excel, Excel en línea y Excel en IOS. La API de JS todavía es inmadura, pero está siendo desarrollada rápidamente por el equipo de Extensibilidad de Microsoft Office, con nuevas versiones de la API que llegan aproximadamente trimestralmente.

La API de JS utiliza JavaScript/TypeScript basado en navegador y tecnologías HTML y CSS. Sus principales objetivos son:

  • Para trabajar en una amplia variedad de puntos finales (móvil, tableta, nube, escritorio).
  • Para dirigirse a los desarrolladores actuales que trabajan principal o exclusivamente con tecnologías web .

La API se ejecuta de forma asíncrona poniendo en cola las interacciones de la API con Excel hasta que solicite que se ejecuten en un lote (Contexto).Sincronización()).

JavaScript & TypeScript

Para desarrolladores de VBA o C, JavaScript es un lenguaje extraño, exasperante pero sorprendentemente potente. Por mencionar algunas diferencias:

  • Las variables en realidad no tienen tipos y distinguen entre mayúsculas y minúsculas. El alcance de las variables (llamado Ámbito Léxico) es muy extraño y a menudo parece atrapar incluso a los desarrolladores de JavaScript experimentados.
  • Los arrays no son realmente arrays y solo tienen una dimensión, por lo que aprenderá rápidamente sobre los arrays de arrays. No tienen límites superiores fijos y pueden ser escasos. Tienen métodos poderosos como MAPEAR, REDUCIR, CORTAR y ORDENAR. (¡Pero es muy difícil hacer que la ordenación de matrices JS funcione de la misma manera que una ordenación de Excel!)
  • Las funciones son ciudadanos de primera clase-puede pasarlas como variables-Las funciones anónimas / Lambda son totalmente compatibles – ¡realmente necesita tener una idea de esto!
  • El procesamiento asíncrono es manejado por cosas llamadas Promesas que se pueden encadenar junto con cierta dificultad (esta situación se conoce como la Pirámide de la perdición)
  • JavaScript como lenguaje todavía está cambiando con bastante rapidez y tiene características que pueden o no ser compatibles con navegadores particulares
  • La popularidad de JavaScript está en parte vinculada y alimentada por los muchos marcos muy potentes y disponibles libremente (jQuery, AngularJS, …)

Y, por cierto, JavaScript no es una versión de lenguaje de script de Java: es un lenguaje completamente diferente.

TypeScript es un intento de Microsoft de corregir algunos de los fallos más atroces de JavaScript.
TypeScript es básicamente un Transpilador: compila TypeScript en JavaScript para que cualquier cosa que pueda ejecutar JavaScript también pueda ejecutar TypeScript transpilado.
Dos ventajas principales de TypeScript son:

  • ¡Puede asignar tipos a variables y tienen un alcance razonable!
  • Puedes usar Async Await en lugar de Promises, lo que hace que tu código sea mucho más legible y evita la Pirámide de la Perdición.

Excel API Technologies Comparadas

Hay 4 familias principales de API de Excel:

API Excel ‘ C ‘ XLL

Esta API es la interfaz disponible públicamente más baja y más integrada para Excel:

  • La interfaz de bajo nivel de la API de mejor rendimiento
  • requiere habilidades de programación en C y administración de memoria.
  • Visual Studio IDE
  • Se ejecuta en el proceso de Excel.
  • La mayoría de las capacidades para UDF (subprocesos múltiples, asíncronos, RTD, Clúster, etc.)
  • Solo cubre un subconjunto del Modelo de objetos de Excel
  • Soporte de interfaz de usuario nativo limitado
  • Utilizado como capa de base por muchos otros productos/plataformas/lenguajes (XLL Plus C++, Excel DNA .NET, Addin Express.NET, PyXLL Python, FCell F# …)
  • Solo Escritorio de Windows
  • Solo nivel de complemento de aplicación
  • Puede usar todos los marcos de trabajo de C y C++ (Biblioteca de plantillas estándar, BOOST …)

API de automatización y COM de Excel

Esta API es la API más rica y más utilizada

  • Idiomas primarios VBA y VB6
  • Buen rendimiento
  • Soporte de modelo de objeto más amplio
  • Admite UDF síncronos de un solo subproceso
  • Se ejecuta en el proceso de Excel
  • Windows
  • Computadoras de escritorio/portátiles Mac OS (pero VBA solo con algunos diferencias con Windows VBA)
  • El grabador de macros proporciona un punto de entrada bajo
  • El IDE integrado pero antiguo para Windows VBA
  • Se puede incrustar en un documento o usar como complemento a nivel de aplicación.
  • VBA prácticamente no ha cambiado durante muchos años y solo tiene un marco limitado y en extinción

API COM-Interop

Esta API agrega una capa de interop. NET adicional en la parte superior de la interfaz COM/Automation. Idealmente, esto habría sido una solución provisional útil hasta que se desarrollara una interfaz de.NET Excel adecuada, pero lamentablemente eso nunca sucedió.

  • Bajo rendimiento
  • Se ejecuta en un proceso separado
  • Admite.NET framework e idiomas
  • Solo Windows
  • Visual Studio IDE
  • Principalmente a nivel de aplicación, pero puede vincularse a un documento usando VSTO
  • No es adecuado para UDFs
  • La oferta de Microsoft es VSTO

Productos como Excel DNA y Addin Express admiten el mundo COM-Interop. NET y la API ‘C’ para permitir un soporte UDF adecuado, un rendimiento mejorado y mantener la riqueza de. NET framework.

Excel JS-API Release 1.4

¡El nuevo chico de la cuadra! Esta es la API que actualmente está siendo desarrollada activamente por Microsoft, por lo que es un objetivo en movimiento. Los comentarios a continuación reflejan la versión 1.4 de la API a febrero de 2017.

  • El código se ejecuta sin cambios en varios endpoints.
    • Pero esto puede resultar en el mínimo denominador común
  • Soporta los muchos frameworks JavaScript
  • Funciona mejor con TypeScript
  • Buen soporte web
  • Soporte de tienda de oficina
  • Se ejecuta en un proceso de navegador separado
  • Requiere Internet: sin capacidad sin conexión
  • Actualmente no hay soporte UDF
  • Rendimiento muy bajo
  • Dirigido a desarrolladores web profesionales
  • Soporte para modelos de objetos
    • Limitado pero en rápida expansión
    • Solo libro de trabajo individual: no se puede copiar, abrir, cerrar o guardar entre libros
    • Control limitado de Cálculo y Actualización de pantalla
    • Sin Copiar y pegar Especial
  • Nube híbrida/Aplicación/Libro de trabajo
  • Procesamiento asíncrono por lotes solo

¿Qué sigue?

Mis próximas entradas de blog en JS se centrarán en el rendimiento de la JS-API.

Si desea obtener más información sobre la JS-API, le recomiendo Crear complementos de Office de Michael Zlatkovsky, desarrollador del equipo de Extensibilidad de Microsoft Office.

You might also like

Deja una respuesta

Tu dirección de correo electrónico no será publicada.