C# DataTable DataColumn ColumnName未显示

C# DataTable DataColumn ColumnName未显示,c#,vsto,excel-2013,datacolumn,C#,Vsto,Excel 2013,Datacolumn,我是VSTO的新手,遇到了一个我似乎无法解决的问题。我试图在Excel 2013中显示一个简单的表,所有内容都会被填充,除了列显示名称显示为“Column1,Column2,Column3” 这是我的密码: var worksheet = Globals.Sheet1; worksheet.Cells.Clear(); var table = new DataTable("Users"); // Set Columns

我是VSTO的新手,遇到了一个我似乎无法解决的问题。我试图在Excel 2013中显示一个简单的表,所有内容都会被填充,除了列显示名称显示为“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);
var工作表=Globals.Sheet1;
worksheet.Cells.Clear();
var表=新数据表(“用户”);
//设置列
var columns=新列表
{
新数据列(“暂存”){ColumnName=“暂存”,Caption=“暂存”},
新建DataColumn(“FirstName”){ColumnName=“First Name”,Caption=“First Name”},
新数据列(“LastName”){ColumnName=“LastName”,Caption=“LastName”}
};
foreach(列中的var列)
{
表.列.添加(列);
}
var lastFilledRow=1;
//填充数据
对于(变量i=1;i<11;i++)
{
var row=table.NewRow();
行[表.列[0]]=“”;
行[表.列[1]]=“Joesph”+i;
行[表.列[2]]=“波纹管”+i;
table.Rows.Add(行);
lastFilledRow++;
}
var lastCell=“C”+lastFilledRow;
工作表。控件。删除(“用户列表”);
var list=worksheet.Controls.AddListObject(worksheet.Range[“A1”,lastCell],“userList”);
列表。SetDataBinding(表);
在调试模式下逐步浏览代码,在整个代码中,我看不到任何设置为“Column1”的属性,但它们设置为提供的值。我知道这些是ColumnName的默认值


我的问题是,当我明确设置ColumnName的值时,为什么在excel中将ColumnName打印为Column1、Column2、Column3?

您需要明确地命名列。在
var list=…
之后添加以下内容:

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

您需要显式地命名列。在
var list=…
之后添加以下内容:

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

这个链接,特别是这个例子,能解决你的问题吗?看起来你需要使用第三个ctor@PetLahev Nope。仍然没有解决这个问题这个链接,特别是这个例子解决了你的问题?看起来你需要使用第三个ctor@PetLahev Nope。仍然无法解决问题