Class AbstractCalculationEngine

Class AbstractCalculationEngine

Namespace: Aspose.Cells
Assembly: Aspose.Cells.dll (25.2.0)

사용자의 커스텀 계산 엔진을 나타내며, Aspose.Cells의 기본 계산 엔진을 확장합니다.

public abstract class AbstractCalculationEngine

상속

objectAbstractCalculationEngine

상속된 멤버

object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

예제

Workbook wb = new Workbook("custom_calc.xlsx");
CalculationOptions opts = new CalculationOptions();
opts.CustomEngine = new MyEngine();
wb.CalculateFormula(opts);

class MyEngine : AbstractCalculationEngine
{
    public override void Calculate(CalculationData data)
    {
        string funcName = data.FunctionName.ToUpper();
        if ("MYFUNC".Equals(funcName))
        {
            // MYFUNC에 대한 계산 수행
            int count = data.ParamCount;
            object res = null;
            for (int i = 0; i < count; i++)
            {
                object pv = data.GetParamValue(i);
                if (pv is ReferredArea)
                {
                    ReferredArea ra = (ReferredArea)pv;
                    pv = ra.GetValue(0, 0);
                }
                // 여기에서 매개변수 처리
                // res = ...;
            }
            data.CalculatedValue = res;
        }
    }
}

비고

사용자는 이 구현에서 Workbook의 어떤 부분도 직접 수정해서는 안 됩니다(계산된 결과인 커스텀 함수의 결과는 CalculationData.CalculatedValue 속성을 통해 설정할 수 있습니다). 그렇지 않으면 예기치 않은 결과나 예외가 발생할 수 있습니다. 사용자가 특정 커스텀 함수의 계산된 결과 외에 다른 데이터를 변경해야 하는 경우, 예를 들어 셀의 수식, 스타일 등을 변경해야 하는 경우, 사용자는 이 구현에서 해당 데이터를 수집하고 수식 계산 범위를 벗어나서 변경해야 합니다.

생성자

AbstractCalculationEngine()

protected AbstractCalculationEngine()

속성

IsParamArrayModeRequired

이 엔진이 매개변수를 배열 모드로 계산할 필요가 있는지 여부를 나타냅니다. 기본값은 false입니다. Aspose.Cells.CalculationData.GetParamValueInArrayMode(System.Int32,System.Int32,System.Int32)가 커스텀 함수 계산 시 필요하고 사용자가 이를 위해 정의를 업데이트하지 않은 경우 (Aspose.Cells.Workbook.UpdateCustomFunctionDefinition(Aspose.Cells.CustomFunctionDefinition)로), 이 속성은 true로 설정해야 합니다.

public virtual bool IsParamArrayModeRequired { get; }

속성 값

bool

비고

이 커스텀 계산 엔진이 매개변수를 배열 모드로 계산해야 하는 경우, 매개변수의 트리를 캐시하기 위해 더 많은 스택이 필요하며 Calculate() 메서드가 매개변수의 값을 계산하기 위해 재귀적으로 호출될 수 있습니다. 성능을 고려하여 특별한 요구 사항이 없는 경우 이 속성을 기본값(false)으로 유지하십시오.

IsParamLiteralRequired

이 엔진이 계산 중에 매개변수의 리터럴 텍스트가 필요하는지 여부를 나타냅니다. 기본값은 false입니다.

public virtual bool IsParamLiteralRequired { get; }

속성 값

bool

비고

이 커스텀 계산 엔진이 매개변수의 리터럴 텍스트가 필요하는 경우, 매개변수의 리터럴 텍스트를 캐시하기 위해 더 많은 스택이 필요하며 Calculate() 메서드가 매개변수의 값을 계산하기 위해 재귀적으로 호출될 수 있습니다. 일반적으로 수식을 계산하는 데 리터럴 텍스트가 필요하지 않으며, 대부분의 구현에서 성능을 향상시키기 위해 이 속성은 false로 유지되어야 합니다.

ProcessBuiltInFunctions

내장 엔진에서 지원하는 내장 함수가 이 구현에서 확인되고 처리되어야 하는지 여부입니다. 기본값은 false입니다.

public virtual bool ProcessBuiltInFunctions { get; }

속성 값

bool

비고

사용자가 일부 내장 함수의 계산 논리를 변경해야 하는 경우, 이 속성은 true로 설정해야 합니다. 그렇지 않으면 성능을 고려하여 이 속성을 false로 유지하십시오.

메서드

Calculate(CalculationData)

주어진 데이터로 하나의 함수를 계산합니다.

public abstract void Calculate(CalculationData data)

매개변수

data CalculationData

함수를 계산하는 데 필요한 데이터(예: 함수 이름, 매개변수 등).

비고

사용자는 이 구현에서 자신이 계산하고자 하는 모든 함수(엑셀 기본 함수 포함)에 대해 주어진 데이터의 계산된 값을 설정해야 합니다.

ForceRecalculate(string)

공유 수식을 계산할 때 항상 주어진 함수를 강제로 재계산해야 하는지 여부입니다.

public virtual bool ForceRecalculate(string functionName)

매개변수

functionName string

함수의 이름입니다. 일반적으로 커스텀 함수의 이름입니다. Aspose.Cells.AbstractCalculationEngine.ProcessBuiltInFunctions가 true인 경우 내장 함수도 여기에서 확인됩니다.

반환값

bool

지정된 함수가 항상 재계산되어야 하는 경우 true입니다.

비고

공유 수식의 경우 여러 셀이 동일한 함수를 공유합니다. 해당 셀의 함수 매개변수가 동일하다면 일반적으로 이 함수는 한 번만 계산될 필요가 있습니다. 따라서 성능을 고려하여 이러한 종류의 함수도 한 번만 계산합니다(Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData)는 모든 셀에 대해 반복적으로 호출되는 대신 한 번만 호출됩니다). 그러나 사용자의 커스텀 구현에서는 함수, 특히 커스텀 함수가 서로 다른 셀에 대해 다르게 계산되어야 할 수도 있습니다. 그렇다면 사용자는 이 메서드를 재정의하여 함수에 대해 true를 반환해야 합니다. 그리고 Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData)에 대해 주어진 Aspose.Cells.CalculationData.CalculatedValue는 이전 계산의 캐시된 값으로 초기화되었을 수 있습니다.

SkipCalculation()

protected void SkipCalculation()
 한국어