在Excel VSTO文档级自定义中,如何通过" Globals.Sheetn" expecing Excel.Worksheet接口的参数?

时间:2016-07-13 02:51:19

标签: c# excel vsto

当我在工作表(例如Sheet8)的部分类文件中编写代码时,如何传递"这个" class作为期望具有Microsoft.Office.Interop.Excel.Worksheet接口的对象的参数?

这是Sheet8.cs文件中的一个示例:

public partial class Sheet8
{
    private void Sheet8_startup(object sender, System.EventArgs e)
    {
        var object = new MyCustomClass(this);
    }
}

我想写的消费代码:

class MyCustomClass
{
    public MyCustomClass(Microsoft.Office.Interop.Excel.Worksheet sheet)
    {
        // Do something with the sheet
    }
}

问题似乎是"这个"始终引用Sheet n 对象,并且不能转换为使用自定义代码创建松散耦合接口所需的接口类型。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

经过数周的搜索,我发现了它。它实际上很简单。

每个Globals.SheetN对象都有一个InnerObject()方法,该方法返回具有正确接口的对象。如何使用它的一个例子:

public partial class Sheet8
{
    Sheet8_startup(object sender, System.EventArgs e)
    {
        var sheet = new MyCustomClass(InnerObject());
    }
}

从那里,您可以根据自己心中的内容构建松散耦合的自定义对象!

答案 1 :(得分:0)

您还可以使用this关键字代替InnerObject()

public partial class Sheet8
{
        Sheet8_startup(object sender, System.EventArgs e)
    {
        var sheet = new MyCustomClass(this);
    }
}

然后,对于您的消费类的构造函数,请使用Microsoft.Office.Tools.Excel.WorksheetBase类型(而不是Worksheet类型)。

class MyCustomClass
{
    public MyCustomClass(Microsoft.Office.Interop.Excel.WorksheetBase sheet)
    {
        // Do something with the sheet
    }
}