0

我想对这个类进行子NetOffice.ExcelApi.Worksheet类化,因为我需要一个带有额外字段的“自定义”工作表。作为这个新类实例构造的一部分,我只想调用基类的构造函数。也就是说,基本上我需要一个常规的Worksheet,但需要设置一些额外的字段并有几个额外的功能。

我如何创建和新的Worksheet?到目前为止,我只使用了类中的Add方法Sheets,它会自动为您执行此操作,然后将其添加到工作表中。据我所知,Worksheet类的构造函数需要获取父对象(这不是问题)和传入的COM代理。我该怎么做?

4

2 回答 2

0

首先:我尝试在 codeplex 上回答几天,但我收到了系统降级通知。(codeplex 目前正在讨论中。完整讨论: http: //netoffice.codeplex.com/discussions/587938

不确定我是否正确理解您,或者您可能没有意识到 COM 是如何工作的。任何时候你调用 Application.ActiveSheet 你都会得到一个新的!!!实例(来自应用程序的代理)当然,它在 COM-Server 上仍然是同一个实例(如果当前工作表没有更改),但每次请求时都会得到一个新实例/代理。(您不需要在 NetOffice 中显式地处理每个实例/代理实例,此外,您可以使用“==”或“!=”轻松比较本地代理实例,但这只是 NetOffice 的一些魔法)

每次请求或使用缓存策略时,您都必须重新投射 Worksheet 实例。

我能为您做的就是在 NetOffice Factory Core 举办一场活动。像这样的东西:

//Event Trigger Example
private NetOfficeCore_OnCreateInstance(object newInstance, ref Type replaceTo)
{
      Worksheet sheet = newInstance as WorkSheet;
      if(null != sheet && sheet.Name = "MySheet")
      {
            replaceTo = typeof(MyCustomWorkSheet);
      }
}

在此示例中,所有名称为“MySheet”的工作表都希望自动替换为您的自定义类型。(当然,您仍然必须将 Application.ActiveSheet 转换为您的自定义类型)

让我知道您的想法*,以便我今天可以创建此活动并构建新版本。

*Sebastian(免责声明:来自 NetOffice 的作者)

于 2015-04-07T09:46:39.747 回答
0

我建议您使用NPOI来处理 excel。它工作正常,不需要安装excel。它可从 NuGet 获得。样品在这里。希望这有帮助。

于 2015-03-18T20:57:53.993 回答