وثائق HotXLS

تجسيد Pivot الآمن في ورقة العمل

يضيف الإصدار 2.384.90 تقييم Pivot المعزول واستبدال نتائج ورقة العمل المحميًا؛ ويمد الإصدار 2.384.92 المصادر المحلية المدعومة إلى الأسماء المعرَّفة والجداول التي تُحل عند كل استدعاء

تجسيد عرض

if Workbook.RefreshPivotCache(Pivot.CacheId) <> 1 then
  raise Exception.Create('Pivot cache refresh failed');
if Workbook.MaterializePivotTable(Pivot) <> 1 then
  raise Exception.Create('Pivot output cannot be replaced safely');

يحسب TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable): Integer النتائج من الـ cache الحالي ويضعها عند FirstRow وFirstCol للعرض؛ ويعيد 1 عند النجاح أو -1 لمصادر غير مدعومة أو وجهات غير آمنة أو فشل تقييم أو تعديل مصنف مرفوض

يظل التحديث وإعادة حساب ورقة العمل عمليتين صريحتين؛ ويبطل التجسيد الناجح تبعيات الحساب ليتمكن المستدعون من إعادة حساب الصيغ اللاحقة عند الاقتضاء

تقبل الحمولة الافتراضية خلايا الوجهة الفارغة والخلايا غير المتغيرة المملوكة سلفًا للعرض نفسه؛ والخلايا المشغولة غير المملوكة في أي مكان داخل مستطيل الإخراج الكامل ترفض العملية، بما يشمل الفجوات التي لا يملؤها كاتب النتائج

if Workbook.MaterializePivotTable(Pivot, True) <> 1 then
  raise Exception.Create('Existing Pivot values cannot be adopted safely');

يستطيع TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer تبنّي الخلايا العددية القائمة صراحةً داخل المستطيل السابق المعلن للعرض عند أول تجسيد له؛ وهو لا يخول استبدال الصيغ أو أعضاء المصفوفات أو النص الغني أو الخلايا الحاملة للبيانات الوصفية أو المحتوى خارج ذلك المستطيل

الملكية وتغيير الحجم والنقل

يحتفظ العرض بالإحداثيات التامة ولقطات القيم محددة النوع للخلايا المكتوبة؛ ويحفظ حفظ XLSX هذه الملكية في تعريف Pivot ليتسنى للتحديثات اللاحقة التحقق منها بعد إعادة الفتح

المحتوى محدد النوع المتغير أو الخلية المملوكة غير الفارغة المحذوفة يرفض التحديث كله؛ وتتشارك الأنواع الفرعية للأعداد تمثيلًا عدديًا قيانيًا، بينما تحتفظ النصوص والقيم المنطقية والأخطاء بهويات متمايزة

تصغير نتيجة أو نقلها يمسح قيم الملكية غير المتغيرة التي لم تعد تنتج فقط؛ وتبقى كائنات الخلايا والتنسيق والتعليقات القائمة متاحة، وتبقى الخلايا غير ذات الصلة خارج مجموعة الملكية

تغيير FirstRow أو FirstCol ينقل الإخراج التالي بينما تبقى إحداثيات الملكية السابقة متاحة للتنظيف؛ والنتيجة الفارغة تمسح قيم الملكية وتحتفظ بموضع المرساة فقط

المعاينة المعزولة

function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter): Integer;
property TXLSPivotTable.EvaluationSourceTable: TXLSPivotTable;

يستخدم TXLSPivotTable.MakePreview نسخًا مستقلة من الـ cache والعرض، بما يشمل عناصر الحقول المحسوبة النائبة، ويتخلص منها بعد التقييم؛ ويحتفظ Make العادي بسلوكه القائم على الـ cache الحي

يتسلم الكاتب إزاحات صفوف وأعمدة مبنية على الصفر وقيمًا محددة النوع؛ وتتبع القيمة المعادة عدد خلايا التجميع في Make وهو منفصل عن عدد استدعاءات الكاتب، والـ cache أو الكاتب المفقود يعيد صفرًا، وتنتشر استثناءات التقييم أو الكاتب

تبقى مسندات سجلات المستدعي ومرشحات المالك المسجلة نشطة في المعاينات، بما يشمل اختيارات Slicer للمصنف؛ ويتسلم النداءات العكسية العرضَ المقيَّم المؤقت وذاكرته المؤقتة

يعيد TXLSPivotTable.EvaluationSourceTable العرض الحي لتقييم عادي والعرض الحي الأصلي لمعاينة؛ واستخدمه عندما يحتاج نداء عكسي إلى تحديد عرض مرتبط، مع قراءة السجلات المقيَّمة من Cache المؤقت الخاص بالنداء

مالكو النداءات يبقون مملوكين للمستدعي؛ ويجب عدم الاحتفاظ بكائنات المعاينة وسجلاتها بعد انتهاء النداء أو استدعاء المعاينة

حدود السلامة

يتطلب التجسيد عرضًا وcache مسجلين في المصنف نفسه ومصدرًا محليًا مدعومًا مستطيلًا أو اسمًا معرَّفًا أو جدولًا؛ وحل المصدر يتبع الأسماء ومدى الجداول الحالية، وتُرفض المصادر غير المدعومة أو غير المحلولة قبل التعديل

هندسة المصدر الحالية ومواضع Pivot الأخرى والجداول المهيكلة ومدى نتائج الاستعلام والخلايا المدمجة والمصفوفات الثابتة أو الديناميكية لا يمكنها تقاطع الإخراج الجديد أو خلايا الملكية القديمة المتطلبة للتنظيف؛ وتبقى إجماليات الجداول محمية رغم استثنائها من سجلات الـ cache

يجري التحقق وتجهيز الإخراج تحت عقد قراءة، يليه حارس تعديل المصنف العادي وفحص الجيل؛ وعرض المصنف للقراءة فقط المجمَّد يرفض التجسيد دون استبدال خلايا أو تغيير الهندسة

يجب أن تكون الفلاتر للقراءة فقط وأن تتبع عقد الكاتب الواحد العادي للمصنف؛ وتمنع العزلة حسابات المعاينة العادية من تغيير الـ cache الحي، لكن كتابات النداء العشوائية عبر كائنات حية ملتقطة منفصلةً لا يمكن التراجع عنها

تجسّد هذه العملية تخطيط نتائج المحسوبة الخاص بالمكتبة؛ ويبقى تأليف تخطيط Pivot الأصلي الكامل وإنشاء واجهة Slicer وتقييم عرض بلا بيانات للترشيح المتقاطع قدرات منفصلة