DataTable DataColumn ColumnName 不显示
DataTable DataColumn ColumnName not displaying
我是 VSTO 的新手,遇到了一个我似乎无法弄清楚的问题。我试图在 Excel 2013 中显示一个简单的 table 并且所有内容都会填充,除了列显示名称是 "Column1, Column2, Column3".
这是我的代码:
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);
在调试模式下单步执行代码,在整个代码中我看不到任何设置为 "Column1" 的属性,但它们已设置为提供的值。我知道这些是 ColumnName 的默认值。
我的问题是,当我明确设置 ColumnName 的值时,为什么 ColumnNames 在 excel 中打印为 Column1、Column2、Column3?
您需要明确命名列。在 var list = ...
之后添加以下内容:
list.ListColumns[1].Name = "Staged";
list.ListColumns[2].Name = "First Name";
list.ListColumns[3].Name = "Last Name";
我是 VSTO 的新手,遇到了一个我似乎无法弄清楚的问题。我试图在 Excel 2013 中显示一个简单的 table 并且所有内容都会填充,除了列显示名称是 "Column1, Column2, Column3".
这是我的代码:
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);
在调试模式下单步执行代码,在整个代码中我看不到任何设置为 "Column1" 的属性,但它们已设置为提供的值。我知道这些是 ColumnName 的默认值。
我的问题是,当我明确设置 ColumnName 的值时,为什么 ColumnNames 在 excel 中打印为 Column1、Column2、Column3?
您需要明确命名列。在 var list = ...
之后添加以下内容:
list.ListColumns[1].Name = "Staged";
list.ListColumns[2].Name = "First Name";
list.ListColumns[3].Name = "Last Name";