2016-08-04 40 views
1

Ich bin neu bei VSTO und stoße auf ein Problem, das ich nicht herausfinden kann. Ich versuche, eine einfache Tabelle in Excel 2013 anzuzeigen, und alles wird aufgefüllt, außer die Spalte-Anzeige-Namen lauten "Spalte1, Spalte2, Spalte3".DataTable DataColumn ColumnName wird nicht angezeigt

Hier ist mein Code:

 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); 

Stepping durch den Code im Debug-Modus, den ganzen Weg durch den Code, den ich keine Attribute auf „Column1“ sehen können, aber sie werden auf die Werte zur Verfügung gestellt gesetzt. Ich weiß, dass dies die Standardwerte für ColumnName sind.

Meine Frage ist, Warum werden die ColumnNames in Excel als Column1, Column2, Column3 ausgedruckt, wenn ich explizit die Werte für ColumnName festlege?

+0

Kann dieser Link und vor allem das Beispiel Ihr Problem lösen? Sieht so aus, als müssten Sie den dritten Ctor verwenden https://msdn.microsoft.com/en-us/library/x81bad6y.aspx – PetLahev

+0

@PetLahev Nein. Das Problem wird jedoch immer noch nicht gelöst – Cameron

Antwort

0

Sie müssen die Spalten explizit benennen. Fügen Sie nach var list = ... Folgendes hinzu:

list.ListColumns[1].Name = "Staged"; 
list.ListColumns[2].Name = "First Name"; 
list.ListColumns[3].Name = "Last Name";