إنقاص وقت الحساب إلى Cell.Calculate طريقة
سيناريوهات الاستخدام الممكنة
عادة ، نوصي المستخدمين بالاتصالالمصنف .CalculateFormula ()الطريقة مرة واحدة ثم الحصول على القيم المحسوبة للخلايا الفردية. لكن في بعض الأحيان ، لا يرغب المستخدمون في حساب المصنف بأكمله. إنهم يريدون فقط حساب خلية واحدة. يوفر Aspose.Cellsخيارات الحساب الخاصية التي يمكنك الضبط عليهاخاطئة وسيقلل من وقت الحساب للخلية الفردية بشكل كبير. لأنه عند تعيين الخاصية العودية إلىحقيقي ، ثم يتم إعادة حساب جميع المعالين من الخلايا في كل مكالمة. ولكن عندما تكون الخاصية العوديةخاطئة، ثم يتم حساب الخلايا التابعة مرة واحدة فقط ولا يتم حسابها مرة أخرى في المكالمات اللاحقة.
إنقاص وقت الحساب لـ Cell.Calculate () طريقة
يوضح نموذج التعليمات البرمجية التالي استخدامخيارات الحساب خاصية. يرجى تنفيذ هذا الرمز مع المعطىنموذج ملف اكسل وتحقق من إخراج وحدة التحكم الخاصة به. ستجد أن تعيين الخاصية العودية إلىخاطئةقلل من وقت الحساب بشكل كبير. يرجى أيضًا قراءة التعليقات من أجل فهم أفضل لهذه الخاصية.
// 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"); | |
} |
إخراج وحدة التحكم
هذا هو إخراج وحدة التحكم لنموذج التعليمات البرمجية أعلاه عند تنفيذه مع المعطىنموذج ملف اكسل على أجهزتنا. يرجى ملاحظة ، قد يختلف الإخراج الخاص بك ولكن الوقت المنقضي بعد تعيين الخاصية العودية إلىخاطئة سيكون دائمًا أقل من تعيينه علىحقيقي.
Recursive True: 96 seconds
Recursive False: 42 seconds