Reduzca el tiempo de cálculo de Cell. Método de cálculo

Posibles escenarios de uso

Normalmente, recomendamos a los usuarios que llamenLibro de trabajo. Calcular fórmula ()método una vez y luego obtenga los valores calculados de las celdas individuales. Pero a veces, los usuarios no quieren calcular todo el libro de trabajo. Solo quieren calcular una sola celda. Aspose.Cells proporcionaCalculationOptions.Recursivo propiedad que puede establecer enfalso y disminuirá significativamente el tiempo de cálculo de la celda individual. Porque cuando la propiedad recursiva se establece enverdadero , luego todos los dependientes de las celdas se vuelven a calcular en cada llamada. Pero cuando la propiedad recursiva esfalso, las celdas dependientes se calculan solo una vez y no se vuelven a calcular en llamadas posteriores.

Reduzca el tiempo de cálculo del método Cell.Calculate()

El siguiente código de ejemplo ilustra el uso deCalculationOptions.Recursivo propiedad. Por favor, ejecute este código con el dadoejemplo de archivo de Excel y verifique su salida de consola. Encontrará que establecer la propiedad recursiva enfalsoha disminuido significativamente el tiempo de cálculo. Lea también los comentarios para una mejor comprensión de esta propiedad.

// 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");
}

Salida de consola

Esta es la salida de la consola del código de muestra anterior cuando se ejecuta con el dadoejemplo de archivo de Excel en nuestra máquina. Tenga en cuenta que su salida puede diferir, pero el tiempo transcurrido después de establecer la propiedad recursiva enfalso siempre será menor que establecerlo enverdadero.

Recursive True: 96 seconds

Recursive False: 42 seconds