C# 如何将VSTO Excel加载项绑定到数据集(.XSD)

C# 如何将VSTO Excel加载项绑定到数据集(.XSD),c#,visual-studio-2015,vsto,excel-2016,C#,Visual Studio 2015,Vsto,Excel 2016,我从以前的开发人员那里继承了一个项目,我正在对代码进行一些调整。不幸的是,他这样做的方式无法满足我的新要求 我创建了一个XSD(C#Dataset对象)并从数据库中填充它。 验证数据是否实际从数据库中提取并填充到数据集中 将该数据集绑定到整个工作表以显示数据的最佳方式是什么。我在网上看到了很多关于如何将数据集绑定到列表对象或其他控件的示例,但如何简单地将其转储到Excel工作表中呢。如何获取工作簿/工作表的引用以设置数据源。绑定是一个基于WPF或WinForms经验的相对术语,更好的方法可能是将

我从以前的开发人员那里继承了一个项目,我正在对代码进行一些调整。不幸的是,他这样做的方式无法满足我的新要求

我创建了一个XSD(C#Dataset对象)并从数据库中填充它。 验证数据是否实际从数据库中提取并填充到数据集中


将该数据集绑定到整个工作表以显示数据的最佳方式是什么。我在网上看到了很多关于如何将数据集绑定到列表对象或其他控件的示例,但如何简单地将其转储到Excel工作表中呢。如何获取工作簿/工作表的引用以设置数据源。

绑定是一个基于WPF或WinForms经验的相对术语,更好的方法可能是将其视为发布和提取,以避免混淆


方法

只有您知道数据,但最好将数据循环到一个数组中,该数组将包含数据的行和列

阵列完成后,发布到页面。下面是我使用过的一些基本代码


示例

public static int LastRow { get; set; }
public static int LastColumn { get; set; }

public static void PublishToSheet(this WorksheetBase theSheet, 
                                  int startRow, 
                                  int startColumn, 
                                  ref string[,] OutputArray)
{

    var totalRows  = OutputArray.GetLength(0);
    var maxColumns = OutputArray.GetLength(1);

    var range = theSheet.Range[theSheet.Cells[startRow, startColumn], 
                               theSheet.Cells[startRow + totalRows - 1,
                                              startColumn + maxColumns - 1]
                              ];
    range.NumberFormat = "@";
    range.Value2 = OutputArray;

    LastRow   = totalRows;
    LastColumn = maxColumns;

}
string[,] OutputArray = new string[2, 2];

OutputArray[0, 0] = "Alpha";
OutputArray[0, 1] = "Beta";
OutputArray[1, 0] = "Gamma";
OutputArray[1, 1] = "Delta";

this.PublishToSheet(10, 4, ref OutputArray);
我有
LastRow
LastColumn
的属性,允许我进一步处理需要附加的其他数据的页面

用法

public static int LastRow { get; set; }
public static int LastColumn { get; set; }

public static void PublishToSheet(this WorksheetBase theSheet, 
                                  int startRow, 
                                  int startColumn, 
                                  ref string[,] OutputArray)
{

    var totalRows  = OutputArray.GetLength(0);
    var maxColumns = OutputArray.GetLength(1);

    var range = theSheet.Range[theSheet.Cells[startRow, startColumn], 
                               theSheet.Cells[startRow + totalRows - 1,
                                              startColumn + maxColumns - 1]
                              ];
    range.NumberFormat = "@";
    range.Value2 = OutputArray;

    LastRow   = totalRows;
    LastColumn = maxColumns;

}
string[,] OutputArray = new string[2, 2];

OutputArray[0, 0] = "Alpha";
OutputArray[0, 1] = "Beta";
OutputArray[1, 0] = "Gamma";
OutputArray[1, 1] = "Delta";

this.PublishToSheet(10, 4, ref OutputArray);


要提取数据,请参阅我对

的回复,谢谢您提供的信息。我将以这种方式进行研究。工作表或工作簿是否有任何属性,我可以将其设置为数据集作为数据源,或者这真的是这样做的方法。