2016-08-04 9 views
1

VSTOを初めて使用していて、わからないような問題が発生しています。 Excel 2013でシンプルな表を表示しようとしていますが、列の表示名が「Column1、Column2、Column3」になっている点を除いて、すべてが表示されます。DataTable DataColumn ColumnNameが表示されない

は、ここに私のコードです:

 var worksheet = Globals.Sheet1; 

     worksheet.Cells.Clear(); 

     var table = new DataTable("Users"); 

     // Set Columns 
     var columns = new List<DataColumn> 
     { 
      new DataColumn("Staged") { ColumnName = "Staged", Caption = "Staged"}, 
      new DataColumn("FirstName") { ColumnName = "First Name", Caption = "First Name" }, 
      new DataColumn("LastName") { ColumnName = "Last Name", Caption = "Last Name"} 
     }; 

     foreach (var column in columns) 
     { 
      table.Columns.Add(column); 
     } 


     var lastFilledRow = 1; 

     // Populate data 
     for (var i = 1; i < 11; i++) 
     { 
      var row = table.NewRow(); 
      row[table.Columns[0]] = ""; 
      row[table.Columns[1]] = "Joesph " + i; 
      row[table.Columns[2]] = "Bellow " + i; 

      table.Rows.Add(row); 
      lastFilledRow++; 
     } 
     var lastCell = "C" + lastFilledRow; 

     worksheet.Controls.Remove("userList"); 
     var list = worksheet.Controls.AddListObject(worksheet.Range["A1", lastCell], "userList"); 

     list.SetDataBinding(table); 

デバッグモードでコードをステップ実行、私は「列1」に設定された任意の属性を見ることができないコードを介してすべての道が、彼らは与えられた値に設定されています。私はこれらがColumnNameのデフォルト値であることを知っています。

私の質問は、なぜColumnNameの値を明示的に設定しているときに、Column1、Column2、Column3という名前でExcelNumberを印刷するのですか?

+0

このリンクは特に問題を解決しますか? 3番目のコードを使用する必要があります。 https://msdn.microsoft.com/en-us/library/x81bad6y.aspx – PetLahev

+0

@PetLahev Nope。それでも問題は解決しない – Cameron

答えて

0

明示的に列に名前を付ける必要があります。 var list = ...の後に以下を追加してください:

list.ListColumns[1].Name = "Staged"; 
list.ListColumns[2].Name = "First Name"; 
list.ListColumns[3].Name = "Last Name"; 
関連する問題