ICustomFunction Özelliği Kullanımı
Bu makale, ICustomFunction özelliğini kullanarak özel işlevleri Aspose.Cells API’leri ile nasıl uygulayacağınızı ayrıntılı bir şekilde anlatmaktadır.
ICustomFunction arabirimine, belirli gereksinimleri karşılamak için Aspose.Cells’in temel hesaplama motorunu genişletmek için özel formül hesaplama işlevleri eklemeye olanak tanır. Bu özellik, özel (kullanıcı tanımlı) işlevleri bir şablon dosyasında veya kodda tanımlamak ve değerlendirmek için kullanışlıdır.
Lütfen unutmayın bu arabirim AbstractCalculationEngine ile değiştirilmiş ve gelecekte kaldırılacaktır. Yeni API hakkında bazı teknik makale/örnekler: burada ve burada
Kullanıcı Tanımlı Bir İşlev Oluşturma ve Değerlendirme
Bu makale, ICustomFunction arabirimini uygulayarak özel bir işlevi yazmayı ve bu işlevi elektronik tabloda kullanmayı ve sonuçları almayı göstermektedir. MyFunc adında 2 parametre kabul eden özel bir işlevi tanımlayacağız.
-
- parametre, bir hücreye atıfta bulunur
-
- parametre, hücrelerin bir aralığına atıfta bulunur
Özel işlev, 2. parametre olarak belirtilen hücre aralığındaki tüm değerleri ekler ve 1. parametredeki değerle bölerek sonucu verir.
İşte CalculateCustomFunction yöntemini nasıl uyguladığımız.
Yeni tanımlanan işlevi bir elektronik tabloda nasıl kullandığımız.
Genel Bakış
Aspose.Cells API’leri, ilgili parametre bir başvuru olduğunda veya hesaplanan sonucu bir başvuru olduğunda, ReferredArea nesnesini ‘paramsList’ içine yerleştirir. Başvuruyu kendiniz kullanmak istiyorsanız, ReferredArea’yı doğrudan kullanabilirsiniz. Formülün konumuna karşılık gelen başvurudan tek bir hücre değerini almanız gerekiyorsa, ReferredArea.GetValue(rowOffset, int colOffset) yöntemini kullanabilirsiniz. Alanın tamamı için hücre değerleri dizisi almanız gerekiyorsa, ReferredArea.GetValues yöntemini kullanabilirsiniz.
Aspose.Cells API’leri tarafından ‘paramsList’ içine ReferredArea verildiğinden, ‘contextObjects’ içindeki ReferredAreaCollection artık gereksiz olmayacak (eski sürümlerde özel işlev parametrelerine her zaman birbirine tekabül etmeyen bir eşleme yapamazdı) ve bu nedenle ‘contextObjects’ içinden kaldırılmıştır.
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...
...
}