الدوائر والتبعيات
مقدمة
- الخلايا المسبقة هي الخلايا التي يشير إليها صيغة في خلية أخرى. على سبيل المثال، إذا كانت الخلية D10 تحتوي على الصيغة =B5، فإن الخلية B5 هي مسبقة للخلية D10.
- ** الخلايا التابعة** تحتوي الخلايا على صيغ تشير إلى خلايا أخرى. على سبيل المثال ، إذا احتوت الخلية D10 على الصيغة = B5 ، فإن الخلية D10 هي تابعة للخلية B5.
لجعل ورق العمل سهل القراءة، قد ترغب في إظهار بشكل واضح الخلايا المستخدمة في صيغة. بالمثل، قد ترغب في استخراج الخلايا المعولة لخلايا أخرى.
يتيح Aspose.Cells لـ Python via .NET تتبع الخلايا ومعرفة تلك المرتبطة.
تتبع خلايا السابقة والتابعة: مايكروسوفت إكسل
قد تتغير الصيغ استنادًا إلى التعديلات التي قام بها العميل. على سبيل المثال ، إذا كانت الخلية C1 معتمدة على C3 و C4 التي تحتوي على صيغة ، وتم تغيير C1 (بحيث يتم تجاوز الصيغة) ، فيجب تغيير C3 و C4 ، أو غيرها من الخلايا ، لتوازن الجدول الخماسي استنادًا إلى قواعد الأعمال.
بالمثل ، فلنفترض أن C1 تحتوي على الصيغة “=(B122)/(M2N32)”. أريد أن أجد الخلايا التي يعتمد C1 عليها ، أي الخلايا السابقة B1 و M2 و N32.
قد تحتاج إلى تتبع التبعية لخلية معينة إلى خلايا أخرى. إذا تم تضمين قواعد الأعمال في الصيغ ، نود معرفة التبعيات وتنفيذ بعض القواعد استنادًا إليها. بالمثل ، إذا تم تعديل قيمة خلية معينة ، فأي الخلايا في ورقة العمل يتأثر بتلك التغيير؟
تسمح مايكروسوفت إكسل للمستخدمين بتتبع الخلايا السابقة والتابعة.
- في شريط الأدوات View Toolbar ، حدد Formula Auditing. سيتم عرض مربع حوار Formula Auditing.
- تتبع السابقين:
- حدد الخلية التي تحتوي الصيغة التي تريد العثور على الخلايا السابقة لها.
- لعرض السهم التتبع إلى كل خلية توفر بيانات مباشرة للخلية النشطة، انقر على تتبع السابقين على شريط أدوات تدقيق الصيغ.
- تتبع الصيغ التي تشير إلى خلية معينة (التوابع)
- حدد الخلية التي تريد تحديد الخلايا التابعة لها.
- لعرض السهم التتبع إلى كل خلية تعتمد على الخلية النشطة، انقر على تتبع التوابع على شريط أدوات تدقيق الصيغ.
تتبع الخلايا الأصلية والخلايا المعتمدة: Aspose.Cells لـ Python via .NET
تتبع السابقين
يجعل Aspose.Cells لـ Python via .NET من السهل استرداد الخلايا الأصلية. يمكنه ليس فقط استرجاع الخلايا التي توفر البيانات للمعادلات البسيطة ولكن أيضًا العثور على الخلايا التي تزود البيانات للمعادلات المعقدة باستخدام النطاقات المسماة.
في المثال أدناه، يتم استخدام ملف إكسل نموذجي، Book1.xls. يحتوي جدول البيانات على بيانات وصيغ على ورقة العمل الأولى.
يوفر Aspose.Cells لـ Python via .NET فئة Cell، وطريقة get_precedents المستخدمة لتعقب خلايا المعادلات الأصلية. تُرجع ReferredAreaCollection. كما موضح أعلاه، تحتوي خلية B7 في Book1.xls على معادلة “=SUM(A1:A3)"، لذا الخلايا A1:A3 هي الخلايا الأصلية للخلية B7. يوضح المثال التالي وظيفة تتبع الأصل باستخدام ملف القالب Book1.xls.
from aspose.cells import CellsHelper, Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
workbook = Workbook(dataDir + "Book1.xlsx") | |
cells = workbook.worksheets[0].cells | |
cell = cells.get("B4") | |
ret = cell.get_precedents() | |
area = ret[0] | |
print(area.sheet_name) | |
print(CellsHelper.cell_index_to_name(area.start_row, area.start_column)) | |
print(CellsHelper.cell_index_to_name(area.end_row, area.end_column)) |
تتبع المعتمدين
يتيح لك Aspose.Cells for Python via .NET الحصول على خلايا الاعتمادية في جداول البيانات. لا يستطيع Aspose.Cells for Python via .NET فقط استرداد الخلايا التي تقدم بيانات بشأن صيغة بسيطة ولكنه أيضًا يجد خلايا تعتمد على صيغ معقدة مع نطاقات مسماة.
يوفر Aspose.Cells for Python via .NET فئة Cell وطرقها get_dependents والتي تُستخدم لتتبع التابعين لخلية. على سبيل المثال، في Book1.xlsx هناك صيغ: “=A1+20” و”=A1+30" في الخليتين B2 وC2 على التوالي. يوضح المثال التالي كيفية تتبع التوابع للخلية A1 باستخدام ملف النموذج Book1.xlsx.
from aspose.cells import Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
workbook = Workbook(dataDir + "Book1.xlsx") | |
cells = workbook.worksheets[0].cells | |
cell = cells.get("B2") | |
ret = cell.get_dependents(True) | |
for c in cell.get_dependents(True): | |
print(c.name) |
تتبع الخلايا المسبقة والمعتمدة وفقًا لسلسلة الحساب
تشير واجهات برمجة التطبيقات أعلاه لتتبع السابقين والتابعين إلى تعبير الصيغة نفسه. فهي توفر ببساطة وسيلة مريحة للمستخدم لتتبع التداخل بين بعض الصيغ. إذا كانت هناك كمية كبيرة من الصيغ في ملف العمل وكان المستخدم بحاجة لتتبع السابقين والتابعين لكل خلية، فستكون الأداء ضعيفًا. في مثل هذه الحالة، ينبغي للمستخدم التفكير في استخدام طرق get_precedents_in_calculation وget_dependents_in_calculation. تتبع هاتان الطريقتان الاعتمادات وفقًا لسلسلة الحساب. لذلك، لاستخدامهما، يجب عليك أولًا تفعيل سلسلة الحساب بواسطة Workbook.settings.formula_settings.enable_calculation_chain. ثم يجب أن تجري حسابًا كاملاً لملف العمل بواسطة Workbook.calculate_formula(). بعد ذلك، يمكنك تتبع السابقين أو التابعين لجميع تلك الخلايا التي تحتاجها.
بالنسبة لبعض الصيغ، قد تكون المسبقات الناتجة مختلفة بالنسبة لـ GetPrecedents و GetPrecedentsInCalculation، وقد تكون المعتمدون الناتجة مختلفة بالنسبة لـ GetDependents و GetDependentsInCalculation. على سبيل المثال، إذا كانت صيغة الخلية A1 هي “=IF(TRUE,B2,C3)"، فستوفر GetPrecedents B2 و C3 كمسبقات لـ A1. وفي هذا السياق، يحمل كل من B2 و C3 المعتمد A1 عند التحقق بواسطة GetDependents. ومع ذلك، بالنسبة لحساب هذه الصيغة، من الواضح أنه يمكن لـ B2 فقط التأثير على النتيجة المحسوبة. لذا فإن GetPrecedentsInCalculation لن تقدم C3 لـ A1، ولن تقدم GetDependentsInCalculation A1 لـ C3. في بعض الأحيان قد يكون لدى المستخدم مجرد متطلبات تتبع تلك الترابطات التي تؤثر فعليًا على النتيجة المحسوبة لصيغ استنادًا إلى البيانات الحالية لورقة العمل، فيجب عليهم أيضًا استخدام GetDependentsInCalculation/GetPrecedentsInCalculation بدلاً من GetDependents/GetPrecedents.
يوضح المثال التالي كيفية تتبع المسبقات والمعتمدين وفقًا لسلسلة الحساب للخلايا:
from aspose.cells import Workbook | |
workbook = Workbook() | |
cells = workbook.worksheets[0].cells | |
cells.get("A1").formula = "=B1+SUM(B1:B10)+[Book1.xls]Sheet1!B2" | |
cells.get("A2").formula = "=IF(TRUE,B2,B1)" | |
workbook.settings.formula_settings.enable_calculation_chain = True | |
workbook.calculate_formula() | |
en = cells.get("B1").get_dependents_in_calculation(False) | |
print("B1's calculation dependents:") | |
for c in en: | |
print(c.name) | |
en = cells.get("B2").get_dependents_in_calculation(False) | |
print("B2's calculation dependents:") | |
for c in en: | |
print(c.name) | |
en = cells.get("A1").get_precedents_in_calculation() | |
print("A1's calculation precedents:") | |
for r in en: | |
print(r) | |
en = cells.get("A2").get_precedents_in_calculation() | |
print("A2's calculation precedents:") | |
for r in en: | |
print(r) |