使用 ICustomFunction 功能

创建和评估用户定义函数

本文演示了 ICustomFunction 接口的实现,以编写自定义函数并在电子表格中使用它来获取结果。我们将通过名称定义一个自定义函数我的函数它将接受 2 个参数以及以下详细信息。

  • 第一个参数指的是单个单元格
  • 第二个参数指的是单元格范围

自定义函数将添加指定为第二个参数的单元格范围中的所有值,并将结果除以第一个参数中的值。

以下是我们如何实现CalculateCustomFunction 方法。

以下是如何在电子表格中使用新定义的函数

概述

Aspose.Cells API 只是在相应参数为引用或其计算结果为引用时将 ReferredArea 对象放入“paramsList”中。如果您需要引用本身,那么您可以直接使用 ReferredArea。如果需要从公式位置对应的引用中获取单个单元格的值,可以使用 ReferredArea.GetValue(rowOffset, int colOffset) 方法。如果您需要整个区域的单元格值数组,那么您可以使用 ReferredArea.GetValues 方法。

由于 Aspose.Cells API 在“paramsList”中提供了 ReferredArea,因此不再需要“contextObjects”中的 ReferredAreaCollection(在旧版本中,它无法始终为自定义函数的参数提供一对一映射),因此它已从“contextObjects”中删除。

 public object CalculateCustomFunction(string functionName, ArrayList paramsList, ArrayList contextObjects)

{

    ...

    object o = paramsList[i];

    if(o is ReferredArea) //fetch data from reference

    {

        ReferredArea ra = (ReferredArea)o;

        if(ra.IsArea)

        {

            o = ra.GetValues();

        }

        else

        {

            o = ra.GetValue(0, 0);

        }

    }

    if (o is Array)

    {

        ...

    }

    else if...

    ...

}