2016-04-06 19 views
2

アドインで条件付き書式を設定する方法が必要です。excel for office.jsの条件付き書式を設定する

現在、VBAを使用してアドインが設定するセルの値に基づいて設定することができますが、office.jsから直接これを行うことができれば本当にうれしいでしょう。

マイクロソフトがアドイン内でこれをネイティブに実装するまで、いくつかの創造的な回避策を探しています。

答えて

0

現在のところ、Office.jsによる条件付き書式の設定はまだサポートされていませんが、今後の更新についてはサポートを追加することを検討します。

おかげで、 フィリップ、オフィス拡張チーム

0

フィリップが言ったようにソフトウェアエンジニアは、条件付き書式は、(ExcelApi 1.2のような)箱から出して使用できません。限り、あなたの範囲のサイズに応じて、創造的な回避策が行く限り、あなたはこのようなことをすることができます。

基本的な考え方は、目的の範囲でバインディングを作成することです。次に、データ変更リスナーを追加し、変更が発生するたびに書式を再適用します。

が行います。このような単純な結合、何かを作成するには:

Office.context.document.bindings.addFromPromptAsync(Office.BindingType.Matrix, {id:'MyBinding'}); 

今すぐ興味深い部分が来る、イベンティング:

var binding; 

Office.context.document.bindings.getByIdAsync('MyBinding', function(result) { 
    if (result.status === "succeeded") { 
     binding = result.value; 
     binding.addHandlerAsync(Office.EventType.BindingDataChanged, formatData); 
    } else { 
     console.log(result.error.message); 
    } 
}); 

function formatData() { 
    // First, disable the binding that was previously created, or else 
    // setting formatting will also trigger data changed event. 
    binding.removeHandlerAsync(Office.EventType.BindingDataChanged); 

    Excel.run(function(ctx) { 
     var range = ctx.workbook.bindings.getItem('MyBinding').getRange(); 
     range.load("values"); 
     return ctx.sync().then(function() { 
      for (var row = 0; row < range.values.length; row++) { 
       for (var col = 0; col < range.values[0].length; col++) { 
        var cellValue = range.values[row][col]; 
        var color; 
        if (cellValue < 30) { 
         color = "red"; 
        } else if (cellValue < 65) { 
         color = "orange"; 
        } else { 
         color = "green"; 
        } 
        range.getCell(row, col).format.fill.color = color; 
       } 
      } 
     }) 
    }) 
    .catch(function(error) { 
     console.log(error); 
    }) 
    .then(function() { 
     // Re-enable the event: 
     binding.addHandlerAsync(Office.EventType.BindingDataChanged, formatData); 
    }); 
} 

ホープ、これは一時的な回避策として役立ちます!

〜マイケル・Zlatkovsky、オフィス拡張のチーム、あなたの(および他の多くの開発者のフィードバック)に基づきMSFT

+0

Mikeに返信してくれてありがとうございます。残念ながら、条件付き書式設定が必要なので残念ですワークブック内にあるので、アドインなしで動作します。 – Dave

+0

条件付き書式を追加してください。広範囲の変更追跡にバインド変更を使用することは不可能です。 –

+0

条件付き書式設定はExcelApi 1.5の予定です。ここでデザインドキュメントを見ることができます:https://github.com/OfficeDev/office-js-docs/tree/ExcelJs_1.4_OpenSpec。この文書には1.4として記載されていますが、1.5に移動されています(1.5まで高速化する目的で1.6になっていない限り)。しかし、条件付き書式設定機能の膨大な部分が既にコード化されているアップ) –

5

上の現像剤、我々はサポートが含まれ、今ビルド2017でExcelのAPI 1.6のプレビューを発表しています条件付き書式設定。 Excel API 1.6をサポートするOffice 365 Insiderビルドは、今月下旬に利用可能になります。

新しいスクリプトラボ(https://aka.ms/getscriptlab)で見ることができるAPIの基礎を示すスニペットを作成しました。単にScript Labアドインをインストールし、ナビゲーションメニューの「インポート」を選択して、次の要点をインポートしてください:https://gist.github.com/TristanD-MSFT/80920d57bf587bd859ff62afb2b7c673

関連する問題