Class AbstractCalculationEngine
Namespace: Aspose.Cells
Assembly: Aspose.Cells.dll (25.2.0)
Kullanıcının özel hesaplama motorunu temsil eder ve Aspose.Cells’in varsayılan hesaplama motorunu genişletir.
public abstract class AbstractCalculationEngine
Miras
object ← AbstractCalculationEngine
Miras Alınan Üyeler
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Örnekler
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 için hesaplama burada yapılır
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);
}
// parametre burada işlenir
// res = ...;
}
data.CalculatedValue = res;
}
}
}
Açıklamalar
Kullanıcı bu uygulamada Workbook’un herhangi bir bölümünü doğrudan değiştirmemelidir (özel fonksiyonun hesaplanan sonucu dışında, bu hesaplanan değer CalculationData.CalculatedValue özelliği ile ayarlanabilir). Aksi takdirde beklenmeyen sonuçlar veya istisnalar oluşabilir. Kullanıcı, bazı özel fonksiyonlar için hesaplanan sonuç dışında başka verileri değiştirmek isterse, örneğin hücrenin formülünü, stilini vb. değiştirmek için, bu verileri bu uygulamada toplamalı ve formül hesaplama kapsamı dışında değiştirmelidir.
Yapıcılar
AbstractCalculationEngine()
protected AbstractCalculationEngine()
Özellikler
IsParamArrayModeRequired
Bu motorun parametrelerin dizi modunda hesaplanması gerekip gerekmediğini belirtir. Varsayılan değer false’dur. Eğer Aspose.Cells.CalculationData.GetParamValueInArrayMode(System.Int32,System.Int32,System.Int32) özel fonksiyonların hesaplanmasında gerekli ise ve kullanıcı bunlar için tanımı güncellememişse (Aspose.Cells.Workbook.UpdateCustomFunctionDefinition(Aspose.Cells.CustomFunctionDefinition) ile), bu özellik true olarak ayarlanmalıdır.
public virtual bool IsParamArrayModeRequired { get; }
Özellik Değeri
Açıklamalar
Eğer bu özel hesaplama motoru parametrelerin dizi modunda hesaplanması gerektiğini düşünüyorsa, parametreler için ağacın önbelleğe alınması için daha fazla yığın gerekecektir ve Calculate() yöntemi parametre değerini hesaplamak için özyinelemeli olarak çağrılabilir. Performans açısından, özel bir gereksinim yoksa bu özelliği varsayılan değer (false) olarak tutmanız önerilir.
IsParamLiteralRequired
Bu motorun hesaplama yaparken parametrenin literal metnine ihtiyaç duyup duymadığını belirtir. Varsayılan değer false’dur.
public virtual bool IsParamLiteralRequired { get; }
Özellik Değeri
Açıklamalar
Eğer bu özel hesaplama motoru parametrenin literal metnine ihtiyaç duyuyorsa, parametreler için literal metni önbelleğe almak için daha fazla yığın gerekecektir ve Calculate() yöntemi parametre değerini hesaplamak için özyinelemeli olarak çağrılabilir. Genel olarak, formüllerin hesaplanması için literal metne ihtiyaç yoktur ve bu özellik çoğu uygulama için daha iyi performans elde etmek amacıyla false olarak tutulmalıdır.
ProcessBuiltInFunctions
Yerleşik motor tarafından desteklenen yerleşik fonksiyonların bu uygulama tarafından kontrol edilip işlenip işlenmeyeceği. Varsayılan değer false’dur.
public virtual bool ProcessBuiltInFunctions { get; }
Özellik Değeri
Açıklamalar
Kullanıcı bazı yerleşik fonksiyonların hesaplama mantığını değiştirmek isterse, bu özellik true olarak ayarlanmalıdır. Aksi takdirde, performans açısından bu özelliği false olarak bırakmanız önerilir.
Yöntemler
Calculate(CalculationData)
Verilen verilerle bir fonksiyonu hesaplar.
public abstract void Calculate(CalculationData data)
Parametreler
data
CalculationData
fonksiyonun hesaplanması için gereken veriler, örneğin fonksiyon adı, parametreler vb.
Açıklamalar
Kullanıcı, bu uygulamada kendisi hesaplamak istediği tüm fonksiyonlar (Excel yerel fonksiyonları dahil) için verilen veriler için hesaplanan değeri ayarlamalıdır.
ForceRecalculate(string)
Paylaşılan formüller hesaplanırken verilen fonksiyonun her zaman yeniden hesaplanmasını zorlayıp zorlamayacağı.
public virtual bool ForceRecalculate(string functionName)
Parametreler
functionName
string
fonksiyonun adı. Genel olarak bu, özel fonksiyonun adıdır. Eğer Aspose.Cells.AbstractCalculationEngine.ProcessBuiltInFunctions true ise, o zaman yerleşik fonksiyonlar burada da kontrol edilecektir.
Dönüş Değeri
belirtilen fonksiyonun her zaman yeniden hesaplanması gerektiği durumunda true.
Açıklamalar
Paylaşılan formüller için, birden fazla hücre aynı fonksiyonu paylaşır. Eğer bu hücreler için fonksiyonun parametreleri de aynı kalıyorsa, genellikle bu fonksiyon yalnızca bir kez hesaplanması gerekir. Bu nedenle, performans açısından bu tür fonksiyonları da yalnızca bir kez hesaplıyoruz (Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) yalnızca bir kez çağrılır, her hücre için tekrar tekrar çağrılmaz). Ancak, kullanıcının özel uygulaması için, belki de fonksiyon, özellikle özel fonksiyon, farklı hücreler için farklı şekilde hesaplanması gerektiğini düşünmektedir. Eğer öyleyse, kullanıcı bu yöntemi geçersiz kılmalı ve fonksiyon için true döndürmesini sağlamalıdır. Ve Aspose.Cells.AbstractCalculationEngine.Calculate(Aspose.Cells.CalculationData) için, verilen Aspose.Cells.CalculationData.CalculatedValue, önceki hesaplamanın önbelleğe alınmış değeri ile başlatılmış olabilir.
SkipCalculation()
protected void SkipCalculation()