如何将 VSTO Excel 添加到数据集 (.XSD)

How to bind a VSTO Excel Add In to a DataSet (.XSD)

我从以前的开发者那里继承了一个项目,我正在做一些代码调整。不幸的是,他的做法无法满足我的新要求。

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

将该数据集绑定到整个 sheet 以显示数据的最佳方法是什么。我已经看到许多关于如何将数据集绑定到列表对象或其他控件的在线示例,但如何将其简单地转储到 Excel sheet。如何获取对 workbook/worksheet 的引用以设置数据源。

绑定是基于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;

}

我拥有 LastRowLastColumn 的属性,允许我进一步处理需要附加其他数据的页面。

用法

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

要提取数据,请参阅我对 How to best fetch a cell value from excel using VSTO?

的回复