إخراج Pivot الأصلي واستعلامات الترشيح المتقاطع والأعضاء المفقودة
إخراج ورقة العمل الأصلي المخزن
function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable): Integer; function TXLSXWorkbook.MaterializeNativePivotTable( ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;
تجهّز العملية شبكة التقرير الأصلية الكاملة المدمجة أو الجداولية أو المخططة وبيانات موضعها وrowItems وcolItems ومحور البيانات الوصفية معًا قبل الالتزام بقيم ورقة العمل وملكية الإخراج معًا؛ وتعيد 1 عند النجاح أو -1 مع تشخيص عند حالة غير مدعومة أو تضارب
تحتفظ العروض المحلية غير الفارغة المدعومة بالفلاتر الحالية وهويات أعضاء الـ cache التامة والتسلسلات الهرمية العادية والنطاقات المجمَّعة المدعومة والمجاميع الفرعية الافتراضية أو المخصصة وأي محور بيانات مدعوم؛ وتستخدم الشبكة الأصلية قيم التجميع الأصلية بدلًا من إعادة دمج المتوسطات المعروضة أو النتائج غير الجمعية الأخرى
تبقى كائنات الخلايا والتنسيق القائمة متاحة، بينما يمسح تصغير التقرير أو نقله قيمَ الملكية السابقة غير المتغيرة فقط؛ والإخراج المحرَّر وتداخل المصدر والدمج والصيغ والمصفوفات والتقارير الأخرى تُرفض قبل التعديل
الإخراج العددي المستورد يتطلب تبنّيًا صريحًا بـ AAdoptExisting=True؛ وتستخدم التحديثات اللاحقة ملكية الخلايا المفردة الدائمة، بما يشمل ما بعد الحفظ وإعادة الفتح
تقرأ العملية سجلات الـ cache الحالية ولا تحدّث بيانات المصدر ولا تعيد حساب الصيغ؛ وقيمة Cache.RefreshOnLoad=False صالحة لأن ورقة العمل تحتوي الآن نتائج أصلية مجهزة فعلية
تشارك نداءات مرشح سجلات المستدعي في المعاينة المنفصلة لكن ليس لها تمثيل في OOXML؛ ولا يستطيع التحديث الأصلي الصريح في Excel إعادة إنتاج قيود نداءات عشوائية، بينما تحتفظ الفلاتر اليدوية وفلاتر Slicer المدعومة الدائمة بتمثيلها السلكي
تستخدم حقول cache المحسوبة SUM المدعومة والعناصر المحسوبة المملوكة للـ cache عقدَ المجاميع السياقية الموضح في حقول Pivot المحسوبة الأصلية والعناصر المملوكة للـ cache؛ وتُرفض تسميات الأعضاء المخصصة وتركيبات التخطيط غير المدعومة صراحةً، بينما يحتفظ التخطيط الخام المولَّد المدعوم بـ XML غير ذي صلة وأقنعة الأعضاء الحالية
TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean هو مساعد التخطيط المجهز الأدنى في lxPivotXml
يتسلم كاتبه مستطيل التقرير كاملًا بترتيب الصفوف الرئيسي بما يشمل الخلايا الفارغة، بإزاحات مبنية على الصفر من مرساة الجدول؛ ويفحص XML والشبكة مسبقًا قبل أول نداء، لكن كتابات المستدعي المملوكة له لا يمكن التراجع عنها إذا أثار نداء استثناء
يزود واجهة المصنف كاتب التقاط منفصلًا لتحديثات الخلايا المعاملاتية؛ وتحصر المعاينة المجهزة المشتركة وشبكات Variant الأصلية في 4194304 خلية
يستطيع مسار المعاينة الأصلي طلب اتجاه إجمالي كلي أصلي عبر معامل AUseNativeGrandTotals الاختياري في TXLSPivotTable.MakePreview؛ وتحفظ استدعاءات الكاتب الواحد وكاتب التخطيط القائمة سلوكهما السابق
التخطيط والتسميات المتكررة
عيّن Compact وOutline على التقرير وكل حقل صف قبل التجسيد؛ وتستخدم الحقول الجداولية العلمين معًا بقيمة False، وتستخدم حقول المخطط Compact=False وOutline=True، وتستخدم الحقول المدمجة العلمين معًا بقيمة True
property TXLSPivotField.RepeatLabels: Boolean;
افتراضي RepeatLabels هو False وينسخ استقلالًا مع الحقل ويقرأ أو يكتب امتداد x14:pivotField fillDownLabels الأصلي؛ وهو يكرر تسميات الأسلاف في الإخراج الجدولي والمخطط ولا أثر له على حقل مفعَّل فيه علمَي الدمج والمخطط معًا
يتسلم كل حقل صف منفصل عموده الفيزيائي الخاص، بينما تتشارك حقول المخطط المتجاورة المدمجة عمود تسمية؛ وتتبع القياسات المتعددة في الصفوف CompactData، وتحتفظ القياسات المتعددة في الأعمدة بتسميات بيانات وإجماليات كلية مستقلة
تظهر المجاميع الفرعية الجدولية الافتراضية أسفل مجموعتها؛ ويختار SubtotalTop المخطط الموضعَ العلوي أو السفلي، بينما تستخدم القياسات في الصفوف صفوف تجميع منفصلة أسفل المجموعة وتحتفظ بتسمية كل قياس
يترك الإخراج الأصلي المخزن تقاطعات الصفوف والأعمدة الغائبة فارغةً ويحفظ الصفر العددي الفعلي؛ ويحتفظ Make العادي والمعاينات دون الخيار الأصلي بسلوك النتيجة الفارغة السابق
ترث الحقول غير النشطة وحقول القياسات تخطيط التقرير في البيانات الوصفية الأصلية المجهزة ليحفظ التحديث الصريح في Excel تسميات الحقول والبيانات المناسبة؛ وتحفظ العملية إعدادات الحقول الحية وفحوص الملكية القائمة
تقبل امتدادات التسميات المتكررة المستوردة أسماء نطاقات مستعارة، بما يشمل الإعلانات على عنصر الامتداد نفسه؛ ويبقى XML غير المعروف غير ذي الصلة محفوظًا في مسار التجسيد الأصلي
الأعضاء المجمَّعون وترتيب المحاور والمجاميع الفرعية المخصصة
يدعم الإخراج الأصلي مجموعات المدى العددي الكاملة ومجموعات التواريخ ومجموعات الأعضاء اليدوية الممثلة ببيانات التجميع الوصفية محددة النوع القائمة في الـ cache؛ وتحفظ التسميات المولَّدة قيم GroupItemLabels المستوردة التامة بما يشمل Unicode وتسميات التواريخ المحلية
يُقيَّم التجميع على cache منفصل حفاظًا على سجلات الـ cache الحي ومقابض العناصر المشتركة وهويات المجموعات؛ وتُرفض الحدود غير الصالحة والفترات الصفرية والنطاقات الناقصة وأنواع قيم عناصر المجموعات غير المدعومة قبل تغيّر إخراج ورقة العمل
يحدد TXLSPivotField.Position المبني على الصفر القائم ترتيب محور الصفوف أو الأعمدة الأصلي المستقر؛ وتحفظ المواضع المتساوية ترتيب الحقول المؤلَّف، فتبقى الحقول المنشأة حديثًا بالوضع الافتراضي بترتيبها السابق
تحتفظ تسلسلات Year/Month الأصلية المستوردة وتسلسلات الأعضاء الأب/اليدوية بتسلسل محاورها الصريح، بينما تبقى فهارس حقول الـ cache وفهارس حقول العرض وهويات أساس حساب العرض دون تغيير؛ وتحترم المجموعات اليدوية ترتيب عناصر Pivot الصريح بدلًا من فرز تسميات المجموعات أو فهارس الـ cache
تدعم المجاميع الفرعية المخصصة للصفوف xlpsSum وxlpsCount وxlpsAverage وxlpsMax وxlpsMin وxlpsProduct وxlpsCountNumbers وxlpsStdDev وxlpsStdDevP وxlpsVar وxlpsVarP، بما يشمل دوال متعددة مختارة وحقولًا جدولية أو مخططة وقياسات في الصفوف
تجمّع كل دالة سجلات المصدر الأصلية عند نطاق مجموعها الفرعي الخاص؛ وتحدد بيانات صفها الوصفية المجهزة الدالةَ المختارة استقلالًا، حفاظًا على سلوك التحديث الصريح في Excel للحسابات غير الجمعية والنتائج الفارغة أو الأخطاء
يستثني اختيار المجموع الفرعي المخصص المستورد المجموع الفرعي التلقائي الضمني حتى عندما يغيب defaultSubtotal في XML الأصلي؛ وعلى التطبيقات عدم الجمع بين xlpsDefault والدوال المخصصة، ويرفض الطلب محدد النوع الملتبس ذاك قبل التعديل
تبقى مستويات حقول الأعمدة المتعددة بالمجاميع الفرعية وتركيبات محور البيانات المدمجة غير المدعومة والأعضاء المطويين والتسميات المخصصة خارج عقد الإخراج الأصلي هذا؛ وللحقول والعناصر المحسوبة متطلباتها الأضيق الخاصة بـ SUM وهوية الأعضاء، والحفظ الخام لا يعني دعم إعادة حساب ميزة أو تجسيدها
يحفظ الحفظ وإعادة الفتح وإعادة التجسيد التجميعَ المدعوم وترتيب المحاور وهويات المجاميع الفرعية؛ وقد تم التحقق من العروض الأصلية المستوردة وذاكرات cache محددة النوع المنسوخة استقلالًا مقابل Excel على الفتح الأولي والتحديث الصريح معًا
حسابات العرض الأصلية
عيّن ShowDataAs أو ExtendedShowDataAs لكل حقل بيانات عادي قبل استدعاء MaterializeNativePivotTable؛ وأوضاع العرض الأساسية والموسعة تتنافى
تشمل الأوضاع الأساسية الفرق ونسبة عنصر أساس وفرق النسبة والمجموع الجاري ونسبة الصف أو العمود أو الإجمالي الكلي والفهرس؛ وتشمل الأوضاع الموسعة نسب الصف الأب والعمود الأب والآباء المختارين والنسبة التراكمية والرتب الكثيفة تصاعديًا أو تنازليًا
BaseField هو فهرس حقل Pivot المبني على الصفر للمقارنات والمجاميع الجارية ونسب الآباء المختارين والرتب؛ وتستخدم المقارنات موضع BaseItem المبني على الصفر أو xlPivotBaseItemPrevious وxlPivotBaseItemNext للأعضاء المرئيين المتجاورين في ترتيب العرض الفعلي
تختار نسب الصف الأب والعمود الأب حقل المحور الأعم المقابل دون استخدام BaseField؛ وغياب المحور المقابل يترك تلك النتائج فارغة
تقسم النسب المئوية البسيطة على التجميع الأصلي عند النطاق ذي الصلة، بما يشمل المتوسطات غير الجمعية؛ وتجمع النسب التراكمية تجميعات الأعضاء المعروضة وتستخدم إجمالي المحور الأصلي لحقل أساس أعم، بينما يستخدم حقل الأساس الخارجي المجموع عبر أعضائه المتبقين المطابقين، لذا قد تتجاوز المتوسطات 100 بالمئة
تَعُدُّ الرتب الأصلية قيم التجميع السابقة المتمايزة، وتحفظ المقارنات سلوك Excel للفارغ والأخطاء عند التقاطعات الغائبة والأسس المفقودة وقواسم الصفر وحدود السابق والتالي؛ وتعامل النسب البسيطة البسطَ الغائب صفرًا
تستخدم الإجماليات الكلية دلالات الوضع المختار الأصلية بما يشمل الإجماليات الفارغة على محور مقارنة أو جري؛ وتغيير وضع العرض يحفظ فحوص الملكية المعاملاتية والتضارب والميزانية الخاصة بالتقرير
يحفظ الحفظ وإعادة الفتح الوضعَ الأساسي أو الموسع المختار وهويات الأساس، وتدعم البيانات الوصفية الأصلية المجهزة تحديثًا صريحًا في Excel؛ ويحتفظ Make العادي والمعاينات دون الخيار الأصلي بعقد الحساب القائم
توافر الترشيح المتقاطع لـ Slicer
property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;
يقيّم هذا الاستعلام للقراءة فقط سجلات الـ cache غير OLAP المدعومة الحالية متجاهلًا اختيار هذا الـ Slicer نفسه مع الاحتفاظ باختيارات Slicer الأخرى والفلاتر اليدوية ومسندات المستدعي وفلاتر التجميع المطبقة
التوافر هو الاتحاد عبر العروض المرتبطة؛ والأعضاء التاريخيون بلا سجلات مطابقة ليس لديهم بيانات، والقياسات الفارغة ليس لها بيانات، بينما تُعد النصوص غير الفارغة والقيم المنطقية والصفر والأخطاء والتواريخ بيانات وفق العقد الأصلي المتحقق منه
يستخدم الاستعلام عقد قراءة ومعاينة سجلات منفصلة ويحفظ المقابض الحية والاختيار ويحترم FormulaArrayMemoryLimit؛ ويثير فشل النداء أو إعادة الدخول أو الارتباطات غير الصالحة أو أعضاء التجميع المحسوبين غير المدعومين استثناءً دون الالتزام بتغييرات حية
لا يستعلم عن التوافر بتحديث الـ caches ولا بإعادة حساب الصيغ ولا بعمليات إدخال/إخراج ملفات ولا بتحديث أعلام بلا بيانات الأصلية المسلسلة؛ وعلى التطبيقات عدم استنتاج حالة واجهة Slicer الأصلية من هذه العملية للقراءة فقط
TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable; ARecordIndex: Integer) of object; function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter; AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;
يتسلم نداء السجلات المتقدم المعاينةَ المنفصلة وفهرس سجل مبنيًا على الصفر بعد الترشيح البسيط والتجميعي المدعومين؛ ويحتفظ EvaluationSourceTable بهوية العرض الأصلية وتكون القيمة المعادة عدد السجلات الصادرة
يستبدل الفلتر البديل نداء المالك المزود المسجل فقط؛ ويبقى المالكون الآخرون والمسند الخارجي نشطين، والنداء البديل غير nil يتطلب مالكًا غير nil
التطهير الصريح للأعضاء التاريخيين
Removed := Workbook.PurgePivotCacheMissingItems(
Pivot.CacheId, 0);
if Removed < 0 then
raise Exception.Create('The cache member purge was rejected');
يزيل TXLSXWorkbook.PurgePivotCacheMissingItems(ACacheId: Integer; ARetainMissingItemsPerField: Integer = 0): Integer الأعضاء غير المستخدمين بعد تحقق كامل وإعادة تعيين للعروض وSlicers المرتبطة المدعومة
يعيد إجمالي عدد العناصر المشتركة المحذوفة عبر كل الحقول، وصفرًا لعملية ناجحة بلا أثر، أو -1 مع تشخيص 1402؛ وتحتفظ السجلات الحالية بكل عضو مُشار إليه، إضافةً إلى العدد المطلوب كحد أقصى من الأعضاء غير المستخدمين لكل حقل مختارين بأعلى فهرس عنصر مشترك أصلي
يحتفظ الأعضاء المحفوظون بترتيبهم النسبي الأصلي ومقابض كائناتهم بينما تصبح الفهارس المنطقية مضغوطة؛ وتحتفظ مقابض الحقول والعناصر المرتبطة وأعلام الإخفاء والتفاصيل اليدوية وأعضاء الصفحة أو المقارنة النشطين واختيارات Slicer بهوياتها
تُحسب أعلام النطاق وحدوده من النطاق المحفوظ؛ وتُعاد تعيين مواضع الصفوف والأعمدة والصفحات المضغوطة المستوردة المدعومة صراحةً، بينما تبقى مراجع الإجمالي الكلي الوهمية والأرقام الترتيبية لحقل البيانات الزائف دون تغيير
تدعم ذاكرات cache المحلية الكاملة العادية لأوراق العمل؛ وتُرفض الـ caches المجمَّعة أو المحسوبة أو حقول خصائص الأعضاء أو OLAP أو الخارجية أو الناقصة أو الملتبسة وبيانات هوية معتمة غير المدعومة قبل التعديل
إزالة عضو صفحة أو مقارنة نشط أو مجموعة فرعية Slicer مختارة كاملةً أو تقاطع فعلي كان غير فارغ سلفًا ترفض ذريًا؛ وتُرفض كذلك سمات الأعضاء البدائية التي ستُفقد أثناء إعادة البناء محددة النوع
يبقى امتداد ملكية التجسيد المعروف دون تغيير لأن إحداثياته ورموز قيمه محددة النوع لا تحتوي فهارس أعضاء cache؛ ولا يُفترض أن امتدادات معتمة غير ذات صلة آمنة
لا يُحدّث التطهير بيانات المصدر ولا يعيد كتابة خلايا تقرير ورقة العمل ولا يستدعي نداءات السجلات ولا يطبق بيانات MissingItemsLimit الوصفية تلقائيًا؛ ويبقى التحديث إلحاقيًا فقط ما لم تُطلب هذه العملية صراحةً
تنسيق التطهير المتقدم
يعيد TXLSPivotCache._PrepareMissingItemPurge TXLSPivotCachePurgePlan معتمًا؛ وعلى التطبيقات عادةً استخدام واجهة المصنف ليُشمل كل عرض وSlicer مرتبطين
يفحص MapItem وRemainingItemCount إعادة تعيين الـ cache، ويسجل StagePivotField حقلًا مرتبطًا ويعيد فهرس مرحلته، ويفحص MapViewItemPosition تعيين الموضع السلكي لذلك الحقل؛ ويُعاد تعيين الأعضاء المحذوفين إلى -1 ويبلّغ RemovedCount عن إجمالي عدد المحذوفات
يفحص Validate المخطط الأصلي والسجلات وهويات ملكية الحقول والعناصر واختيارات العروض المجهزة؛ ويتحقق Commit مجددًا وينقل الملكية المجهزة دون تخصيص أو نداءات بعد أول تبادل حي
يملك الخطة اللقطات المنفصلة ويُبقي ذاكرته المجهزة القابلة للتعديل خاصة ولا يملك أبدًا كائنات الـ cache أو العرض الأصلية؛ وأبقِ تلك الأصول حيةً حتى يحرر Destroy الخاص بالخطة التجهيز، والتزم بكل خطة مرة واحدة فقط
يعيد رفض تجهيز حقل تراجع تلك المرحلة ليُعاد استخدام الخطة؛ وتُرفض التعديلات غير المدعومة بعد التجهيز قبل الالتزام