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

ค่า Property

bool

หมายเหตุ

หากเอนจินการคำนวณแบบกำหนดเองนี้ต้องการให้พารามิเตอร์ถูกคำนวณในโหมดอาร์เรย์ จะต้องมีสแต็กเพิ่มเติมเพื่อแคชต้นไม้สำหรับพารามิเตอร์ และเมธอด Calculate() อาจถูกเรียกซ้ำเพื่อคำนวณค่าของพารามิเตอร์ สำหรับการพิจารณาด้านประสิทธิภาพ โปรดเก็บคุณสมบัตินี้ไว้เป็นค่าเริ่มต้น (false) หากไม่มีข้อกำหนดพิเศษ

IsParamLiteralRequired

ระบุว่าเอนจินนี้ต้องการข้อความลิเทอรัลของพารามิเตอร์ในขณะทำการคำนวณหรือไม่ ค่าเริ่มต้นคือ false.

public virtual bool IsParamLiteralRequired { get; }

ค่า Property

bool

หมายเหตุ

หากเอนจินการคำนวณแบบกำหนดเองนี้ต้องการข้อความลิเทอรัลของพารามิเตอร์ จะต้องมีสแต็กเพิ่มเติมเพื่อแคชข้อความลิเทอรัลสำหรับพารามิเตอร์ และเมธอด Calculate() อาจถูกเรียกซ้ำเพื่อคำนวณค่าของพารามิเตอร์ โดยทั่วไปแล้วข้อความลิเทอรัลไม่จำเป็นสำหรับการคำนวณสูตร และคุณสมบัตินี้ควรจะถูกเก็บไว้เป็น false สำหรับการดำเนินการส่วนใหญ่เพื่อให้ได้ประสิทธิภาพที่ดีกว่า

ProcessBuiltInFunctions

ระบุว่าฟังก์ชันที่มีอยู่ซึ่งได้รับการสนับสนุนโดยเอนจินที่มีอยู่ควรได้รับการตรวจสอบและประมวลผลโดยการดำเนินการนี้หรือไม่ ค่าเริ่มต้นคือ false.

public virtual bool ProcessBuiltInFunctions { get; }

ค่า Property

bool

หมายเหตุ

หากผู้ใช้ต้องการเปลี่ยนตรรกะการคำนวณของฟังก์ชันที่มีอยู่บางฟังก์ชัน คุณสมบัตินี้ควรถูกตั้งค่าเป็น true. มิฉะนั้น โปรดปล่อยให้คุณสมบัตินี้เป็น false เพื่อการพิจารณาด้านประสิทธิภาพ

วิธีการ

Calculate(CalculationData)

คำนวณฟังก์ชันหนึ่งด้วยข้อมูลที่กำหนด

public abstract void Calculate(CalculationData data)

พารามิเตอร์

data CalculationData

ข้อมูลที่จำเป็นในการคำนวณฟังก์ชัน เช่น ชื่อฟังก์ชัน พารามิเตอร์ ฯลฯ

หมายเหตุ

ผู้ใช้ควรกำหนดค่าที่คำนวณสำหรับข้อมูลที่กำหนดสำหรับฟังก์ชันทั้งหมด (รวมถึงฟังก์ชันพื้นเมืองของ Excel) ที่เขาต้องการคำนวณด้วยตนเองในการดำเนินการนี้

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()
 แบบไทย