2017-11-18 15 views
0

これはループで追加するまで問題なく動作していました。私はスタイルが2回追加されているので、それが起こると思います。Excel.Style:Stylesクラスのメソッドの追加に失敗しました

シートの最初の行にスタイルを追加しようとしています。

if (LastRowInsertionIndex==1) 
{ 
    xlWorkSheet.Activate(); 
    xlWorkSheet.Cells[1, 1] = "CaseNumber"; 
    xlWorkSheet.Cells[1, 2] = "Names"; 
    xlWorkSheet.Cells[1, 3] = "Bar Number"; 
    xlWorkSheet.Cells[1, 4] = "Email"; 
    xlWorkSheet.Cells[1, 5] = "Title"; 

    Excel.Style style = WorkBook.Styles.Add("NewStyle"); 

    //style.Font.Name = "Verdana"; 
    style.Font.Size = 14; 
    style.Font.Bold = true; 
    xlWorkSheet.Cells[1, 1].Style = style; 
} 

Excel.Style style = WorkBook.Styles.Add("NewStyle");エラーが発生します。

Add method of Styles class failed 

そして、最初の列の各セルを1つずつ選択する必要があります。すべての行を選択する方法はありますか?

答えて

0

Workbook.Stylesは、インデクサーを持っているように見えないので、あなたは、このような怠惰な-loadメソッドを実装できます

private Dictionary<Excel.Workbook, Excel.Style> _MyStyle = 
    new Dictionary<Excel.Workbook, Excel.Style>(); 
private Excel.Style MyStyle(Excel.Workbook Wb) 
{ 
    Excel.Style myStyle; 
    if (!_MyStyle.TryGetValue(Wb, out myStyle)) 
    { 
     myStyle = Wb.Styles.Add("NewStyle"); 

     myStyle.Font.Name = "Verdana"; 
     myStyle.Font.Size = 14; 
     myStyle.Font.Bold = true; 
     _MyStyle.Add(Wb, myStyle); 
    } 

    return myStyle; 
} 

をし、このようにそれを実装します。また

if (LastRowInsertionIndex == 1) 
{ 
    xlWorkSheet.Activate(); 
    xlWorkSheet.Cells[1, 1] = "CaseNumber"; 
    xlWorkSheet.Cells[1, 2] = "Names"; 
    xlWorkSheet.Cells[1, 3] = "Bar Number"; 
    xlWorkSheet.Cells[1, 4] = "Email"; 
    xlWorkSheet.Cells[1, 5] = "Title"; 

    xlWorkSheet.Cells[1, 1].Style = MyStyle(Workbook); 
} 

、あなたワークブック内の各スタイルをループすることができますが、それを呼び出す回数が増えるほど、より多くのスタイルを持つ方が非効率的になります。

レイジーロードアプローチのもう1つの利点は、複数のスタイルを実装する場合、追加のパラメータとして渡すことができることです。

関連する問題