プライバシー&クッキー
このサイトはクッキーを使用しています。 継続することにより、あなたはそれらの使用に同意します。 Cookieの制御方法など、詳細についてはこちらをご覧ください。
私はここ数ヶ月、新しいJavaScript Excel APIを試して時間を費やしてきました。
これは、EXCEL Office開発者の視点からJS-APIを検討する予定の一連の記事の最初のものです。JS APIの主な利点は、WINDOWS Excel、Mac Excel、Excel Online、およびIOS上のExcelで動作するコードを記述できることです。 JS APIはまだ未熟ですが、Microsoft Office拡張チームによって急速に開発されており、APIの新しいリリースはほぼ四半期ごとに到着しています。
JS APIは、ブラウザベースのJavaScript/TypeScriptとHTMLとCSS技術を使用しています。 それは主な目的は次のとおりです:
- このような多種多様なエンドポイント(モバイル、タブレット、クラウド、デスクトップ)にわたって動作します。
- web技術を主にまたは独占的に使用している今日の開発者を対象としています。
APIは、バッチ(コンテキスト)で実行するように要求するまで、EXCELとのAPI相互作用をキューに入れることによって非同期的に実行されます。同期())。VBAまたはC開発者のためのJavascript&TypeScript
JavaScriptは奇妙で、憤慨しているが驚くほど強力な言語です。 いくつかの違いを言及するには:
- 変数には実際には型がなく、大文字と小文字が区別されます。 変数のスコープ(Lexical Scopeと呼ばれる)は真剣に奇妙で、熟練したJavaScript開発者でさえもしばしばキャッチしているようです。
- 配列は実際には配列ではなく、次元が1つしかないので、配列の配列についてすぐに学びます。 上限は固定されておらず、まばらにすることができます。 彼らは、MAP、REDUCE、SLICE、SORTなどの強力なメソッドを持っています。 (しかし、JS配列の並べ替えをExcelの並べ替えと同じように動作させるのは本当に難しいです!)
- 関数はファーストクラスの市民です–変数のように渡すことができます–匿名/ラムダ関数は完全にサポートされています–本当にこれを回避する必要があ
- 非同期処理はPromiseと呼ばれるものによって処理され、いくつかの困難と一緒に連鎖することができます(この状況はDoomのピラミッドとして知られています)
- JavaScriptはまだかなり急速に変化しており、特定のブラウザでサポートされているかもしれないし、サポートされていないかもしれない機能を持っています
- JavaScriptの人気は、部分的に非常に強力で自由に利用できる多くのフレームワーク(JQuery、AngularJS)によって束縛され、供給されています, …)
ところで、JavaScriptはjavaのスクリプト言語バージョンではありません。
TypeScriptは、より悪質なJavaScriptの失敗のいくつかを修正するためのMicrosoftによる試みです。
TypeScriptは基本的にTranspilerです–TypeScriptをJavaScriptにコンパイルするので、JavaScriptを実行できるものは何でもtranspiled TypeScriptを実行することができます。
TypeScriptの二つの主な利点は次のとおりです:
- あなたは変数に型を割り当てることができ、それらは賢明な範囲を持っています!
- Promiseの代わりにAsync Awaitを使用すると、コードを読みやすくし、運命のピラミッドを避けることができます。
Excel APIテクノロジ比較
Excel Apiには4つの主要なファミリがあります。
Excel’C’XLL API
このAPIは、Excelへの最も緊密に統合され、公開されているインターフェイ:
- 最高のパフォーマンスAPI
- 低レベルのインタフェースには、Cプログラミングとメモリ管理のスキルが必要です。
- Visual Studio IDE
- はExcelプロセスで実行されます。
- Udfのほとんどの機能(マルチスレッド、非同期、RTD、クラスターなど)
- は、Excelオブジェクトモデルのサブセットのみをカバーしています
- 限定されたネイNET、PyXLL Python、FCell F#…)
- Windowsデスクトップのみ
- アプリケーションアドインレベルのみ
- すべてのCおよびC++フレームワークを使用できます(標準テンプレートライブラリ、BOOST…)
Excel COM And Automation API
このAPIは、最も豊富で最も広く使用されているAPI
- 主要言語VBAとVB6
- 優れたパフォーマンス
- 最も広いオブジェクトモデルのサポート
- シングルスレッド同期Udfをサポート
- Excelプロセスで実行
- windows
- MAC osのデスクトップ/ラップトップ(ただし、vbaは一部のみ Windows VBAとの違い)
- マクロレコーダーは、エントリポイントが低い
- 組み込みですが、windows VBA
- 用の古代のIDEは、ドキュメントに埋め込まれたり、アプリケーションレベル
- VBAは長年にわたってほとんど変更されず、限られた死にかけているフレームワーク
COM-Interop API
このAPIは、COM/Automationインターフェイスの上に追加の.NET interopレイヤーを追 理想的には、適切な.NET Excelインターフェイスが開発されるまで、これは便利な一時停止でしたが、悲しいことにそれは起こりませんでした。
- パフォーマンスの低下
- は別のプロセスで実行されます
- .NET frameworkと言語をサポートします
- Windowsのみ
- Visual Studio IDE
- 主にアプリケーションレベルですが、VSTOを使用してドキュメントにバインドすることができます
- Udfには適していません
- マイクロソフトの提供は、excel dnaやaddin expressなどのvsto
製品は、com-INTEROP.netの世界と”c”apiの両方をサポートし、適切なudfサポートを可能にし、.net frameworkの豊かさを維持しながらパフォーマ
Excel JS-APIリリース1.4
ブロック上の新しい子供! これは現在Microsoftによって積極的に開発されているAPIであるため、非常に移動するターゲットです。 以下のコメントは、2017年2月時点のAPIの1.4バージョンを反映しています。
- コードは複数のエンドポイント間で変更されずに実行されます。
- しかし、これは共通分母のサポートが最も低くなる可能性があります
- 多くのJavaScriptフレームワークをサポートしています
- TypeScriptで最適に動作します
- 優れたWebサポート
- Officeストアのサポート
- 別のブラウザプロセスで実行されます
- インターネッ
- プロのweb開発者を対象とした
- オブジェクトモデルのサポート
- 限られているが急速に拡大している
- 単一のワークブックのみ: ブック間のコピー、開く、閉じる、または保存できません
- 計算と画面更新の制限された制御
- コピー貼り付けなし特別
- ハイブリッドクラウド/アプリケーション/ワークブックレベル
- バッチ非同期処理のみ
次は何ですか?
JSに関する次のブログ記事は、JS-APIのパフォーマンスに焦点を当てます。JS-APIの詳細を知りたい場合は、Microsoft Office Extensibilityチームの開発者であるMichael ZlatkovskyによるOfficeアドインの構築をお勧めします。