VSTO Excel:如何使用ListObject进行自定义列映射?

Uco*_*dia 4 data-binding excel vsto

我有这样的模型:

public class Instrument
{
    public string Id { get; set; }
    public string Name { get; set; }

    // About 100 other properties
}
Run Code Online (Sandbox Code Playgroud)

我从Entity Framework EDM中检索Instrument实例.

现在我想做的是能够创建自定义映射以将此数据集绑定到Excel ListObject.默认情况下,ListObject将显示Excel工作表中的每一列,但我只想显示某些属性并按特定顺序显示.

ExcelTools.ListObject instrumentsTable = this.Controls.AddListObject(tableStart, tableName);
instrumentsTable.DataSource = myEDM.Instruments;

// Custom mapping code...
Run Code Online (Sandbox Code Playgroud)

我试图使用SetDataBinding方法,但它抛出了数据绑定异常.

有人可以帮助我实现这一目标吗?

谢谢.

GTG*_*GTG 7

我不知道这是否有用,但我创建了一个测试项目.测试项目运行没有问题.

首先,我声明一个测试类:

public class Instrument
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Property1 { get; set; }
    public string Property2 { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

我有一个函数getInstruments,它返回一个List.

然后我使用以下代码将其绑定到工作表:

        List<Instrument> list = getInstruments();
        ListObject instrumentsTable = Controls.AddListObject(Range["A1", "B4"], "list1");
        string[] mappedColumns = { "Name", "Property1" };
        instrumentsTable.SetDataBinding(list, string.Empty, mappedColumns);
Run Code Online (Sandbox Code Playgroud)

这将显示一张包含4个乐器的工作表,在A和B列中显示Name和Property1.

我也尝试使用Entity框架,将工作表连接到我的一个数据库,并没有遇到任何问题.

如果您仍然遇到问题,请提供有关使用SetDataBinding时获得的异常的更多信息.