Cell'in Hesaplama Süresini azaltın. Hesaplama yöntemi

Olası Kullanım Senaryoları

Normalde, kullanıcıların aramasını öneririz.Workbook.CalculateFormula()yöntemini bir kez kullanın ve ardından tek tek hücrelerin hesaplanan değerlerini alın. Ancak bazen kullanıcılar tüm çalışma kitabını hesaplamak istemezler. Sadece tek bir hücreyi hesaplamak istiyorlar. Aspose.Cells sağlarCalculationOptions.Recursive ayarlayabileceğiniz özellikYANLIŞ ve bireysel hücrenin hesaplama süresini önemli ölçüde azaltacaktır. Çünkü özyinelemeli özellik olarak ayarlandığındadoğru , ardından hücrelerin tüm bağımlıları her aramada yeniden hesaplanır. Ancak özyinelemeli özellik olduğundaYANLIŞ, ardından bağımlı hücreler yalnızca bir kez hesaplanır ve sonraki çağrılarda tekrar hesaplanmaz.

Cell.Calculate() yönteminin Hesaplama Süresini azaltın

Aşağıdaki örnek kod, kullanımını göstermektedirCalculationOptions.Recursive Emlak. Lütfen bu kodu verilenlerle yürütünörnek excel dosyası ve konsol çıktısını kontrol edin. Özyinelemeli özelliğin şu şekilde ayarlandığını göreceksiniz:YANLIŞhesaplama süresini önemli ölçüde azaltmıştır. Lütfen bu mülkü daha iyi anlamak için yorumları da okuyun.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Test calculation time after setting recursive true
TestCalcTimeRecursive(true);
// Test calculation time after setting recursive false
TestCalcTimeRecursive(false);
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
static void TestCalcTimeRecursive(bool rec)
{
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Load your sample workbook
Workbook wb = new Workbook(dataDir + "sample.xlsx");
// Access first worksheet
Worksheet ws = wb.Worksheets[0];
// Set the calculation option, set recursive true or false as per parameter
CalculationOptions opts = new CalculationOptions();
opts.Recursive = rec;
// Start stop watch
Stopwatch sw = new Stopwatch();
sw.Start();
// Calculate cell A1 one million times
for (int i = 0; i < 1000000; i++)
{
ws.Cells["A1"].Calculate(opts);
}
// Stop the watch
sw.Stop();
// Calculate elapsed time in seconds
long second = 1000;
long estimatedTime = sw.ElapsedMilliseconds / second;
// Print the elapsed time in seconds
Console.WriteLine("Recursive " + rec + ": " + estimatedTime + " seconds");
}

Konsol Çıkışı

Bu, verilen ile çalıştırıldığında yukarıdaki örnek kodun konsol çıktısıdır.örnek excel dosyası makinemizde. Lütfen unutmayın, çıktınız farklı olabilir, ancak özyinelemeli özelliği şu şekilde ayarladıktan sonra geçen süre:YANLIŞ ayarlamaktan her zaman daha az olacaktır.doğru.

Recursive True: 96 seconds

Recursive False: 42 seconds