2017-08-21 22 views
0

新しく作成されたシートに関連付けられたセル範囲をスタイル設定しようとしています。境界線の書式設定

私の最新の2(失敗)の試行は、次のとおりです。

Excel.run(function (context) { 
    const newSheet = context.workbook.worksheets.add("New sheet 1"); 
    newSheet.activate(); 
    const values = [ 
     ["Row 1", "Row 1", "Row 1"], 
     ["Row 2", "Row 2", "Row 2"] 
    ] 
    newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1).values = values; 
    context.sync().then(function() { 
     newSheet.getRange("A2").getResizedRange(0, output[0].length - 1).foramt = {borderTopStyle: "thin"}; 
     return context.sync(); 
    }); 
}); 
そして:

Excel.run(function (context) { 
    const newSheet = context.workbook.worksheets.add("New sheet 1"); 
    newSheet.activate(); 
    const values = [ 
     ["Row 1", "Row 1", "Row 1"], 
     ["Row 2", "Row 2", "Row 2"] 
    ] 
    newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1).values = values; 
    context.sync().then(function() { 

     // The difference is here 
     newSheet.getRange("A2").getResizedRange(0, values[0].length - 1).foramt.borderTopStyle = "thin"; 
     return context.sync(); 
    }); 
}); 

セルの範囲をスタイルする正しい方法は何ですか?

答えて

1

まず、あなたが投稿したコードの全体的な構造/内容に関するいくつかのコメント/提案:

  • それ以外のものは黙ってあなたは何が悪かったのか知らずに失敗することがあり、常にエラー処理ロジックを含むようにしてください。
  • あなたのシナリオでは、その前にやっていること(つまり、シートにデータを書き込んだり、シートに書式を適用するなど)を単純にキューに入れることができるので、最後にcontext.sync()最後に単一のcontext.sync()ですべてを一緒に実行します。
  • コードにtypo(書式ではなくforamt)が含まれ、RangeFormatオブジェクト(borderTopStyle)に存在しないプロパティ名を参照しています。プレーンJavaScriptの代わりにTypeScriptを使用する場合、このようなエラーは自動的にフラグが立てられます。

ここでは、指定した範囲(あなたが投稿したコードの構造に基づいていますが、上記のフィードバックを組み込むように修正)の境界線を設定する方法を示したコードスニペットがあります:

Excel.run(function (context) { 

    // create new sheet, add 2 rows of data 
    const newSheet = context.workbook.worksheets.add("New sheet 1"); 
    newSheet.activate(); 
    const values = [ 
     ["Row 1", "Row 1", "Row 1"], 
     ["Row 2", "Row 2", "Row 2"] 
    ] 
    newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1).values = values; 

    // set top border for the second row of data 
    newSheet.getRange("A2").getResizedRange(0, values[0].length - 1).format.borders.getItem('EdgeTop').style = 'Continuous'; 

    return context.sync(); 
}) 
    .catch(function (error) { 
     console.log('error: ' + error); 
     if (error instanceof OfficeExtension.Error) { 
      console.log('Debug info: ' + JSON.stringify(error.debugInfo)); 
     } 
    }); 
} 
+0

クール、それはうまくいった!また、2つのセルをどのようにマージできますか? – avi12

+0

セルのマージについての新しい質問については、ここでスタックオーバーフローに関する新しい投稿を作成できますか?それぞれのトピック/質問ごとに別々の投稿を作成することで、回答を知っている人がそれを見て反応する可能性が高まり、他人が恩恵を受ける可能性が高くなります(質問/回答) 将来は。ありがとう! –

+0

ありがとう!ここに質問があります:https://stackoverflow.com/questions/45805035 – avi12

関連する問題