مرجع القارئ والكاتب المباشر
TXLSDirectReader و TXLSDirectWriter حزم XLSX دون الاحتفاظ بشبكة ورقة عمل كاملة في الذاكرة، لذلك يجب إجراء استدعاءات API التي تصف ورقة قبل مرحلة البث المقابلة أو أثناءها
دورة حياة الكاتب وقيم الخلايا
TXLSDirectWriter.BeginFile أو BeginStream حزمة، وتعرّف طرق الورقة ورقة عمل واحدة في كل مرة، ويلتزم Finish بالحزمة النهائية
| Scalar cells | WriteStringو WriteRichStringو WriteNumberو WriteBooleanو WriteDateTimeو WriteError |
| Formula cells | WriteFormulaو WriteFormulaNumberو WriteFormulaStringو WriteFormulaBooleanو WriteFormulaDateTimeو WriteFormulaError نتائج مخزنة مقدَّمة من المتصل |
| Shared strings | UseSharedStrings إلغاء تكرار السلاسل على مستوى الحزمة |
| Statistics | CellCount عن عدد الخلايا المُخرَجة |
| Panes | FreezePanes(ColSplit, RowSplit) تقسيمة مجمّدة عند العمود والصف المعيَّنَين (القائمَين على الواحد) |
الصفوف والأعمدة قائمة على الواحد في سطح الكاتب العام ويجب توفيرها بترتيب ورقة العمل الأمامي
دورة حياة ترقيع ورقة العمل
BeginPatch يستبدل ورقة عمل واحدة أو يدرج ورقة جديدة مع الحفاظ على أجزاء الحزمة غير المماسة. ويحرر فشلُ التهيئة الأرشيفَ المصدر وتدفقَ المصدر فورًا، سواء مع ورقة مفقودة أو جزء حزمة مطلوب مفقود أو أرشيف غير صالح أو فشل في إنشاء الوجهة. وتبقى ملفات المصدر وتسجيلات المؤقت المملوكة للمتصل مسؤولية المتصل؛ وتتيح المقابض المحررة إزالة تلك المصادر أو تحريرها
يحرر Close والتدمير مقابض المصدر حتى عند غياب وجهة نشطة أو عندما يثير إنهاء الترقيع استثناء. ويحتفظ استبدال الوجهة غير الناجح بمخرجاته المعدة للفحص، ويمكن للكاتب بدء ترقيع لاحق أو عملية ملف عادية بعد فشل التهيئة
الأنماط القابلة لإعادة الاستخدام
AddCellStyle مقبض نمط غير قابل للتغيير على مستوى الحزمة، ويشتق CloneCellStyle مقبضًا جديدًا دون الاحتفاظ بصفوف ورقة العمل
الأسماء المعرَّفة والارتباطات التشعبية
AddDefinedNameو AddLocalDefinedNameو AddDefinedRangeو AddLocalDefinedRange أسماء على مستوى المصنف أو الورقة قبل إتمام الحزمة
AddHyperlinkو AddHyperlinkRangeو AddInternalHyperlinkو AddInternalHyperlinkRange علاقات خارجية أو مواقع أوراق داخلية لخلية واحدة أو نطاق
التحقق من البيانات
AddDataValidation و AddDataValidationSqRef عن سطح القواعد الكامل، بينما توفر AddListValidationو AddWholeNumberValidationو AddDecimalValidationو AddDateValidationو AddTimeValidationو AddTextLengthValidationو AddCustomValidation مساعدات مكتوبة الأنواع
التنسيق الشرطي
AddConditionalFormatو AddConditionalFormatExpressionو AddConditionalFormatContainsTextو AddConditionalFormatNotContainsTextو AddConditionalFormatBeginsWithو AddConditionalFormatEndsWithو AddConditionalFormatTop10و AddConditionalFormatAboveAverageو AddConditionalFormatDuplicateValuesو AddConditionalFormatUniqueValuesو AddConditionalFormatContainsBlanksو AddConditionalFormatNotContainsBlanksو AddConditionalFormatContainsErrorsو AddConditionalFormatNotContainsErrors قواعد قياسية
AddConditionalFormatDataBarو AddConditionalFormatColorScale2و AddConditionalFormatColorScale3و AddConditionalFormatIconSet قواعد مرئية؛ ويزيل ClearConditionalFormats القواعد المعلقة للورقة الحالية
المرشح التلقائي والجداول
AddAutoFilterValueو AddAutoFilterDateGroupو AddAutoFilterSortCondition مرشح ورقة العمل
AddTable جزء جدول، وتُهيئ AddTableFilterValueو AddTableFilterDateGroupو AddTableSortCondition حالة المرشح والفرز الخاصة به
الحماية وفواصل الصفحات
ProtectSheetو UnprotectSheetو AddProtectedRangeو ClearProtectedRanges حماية ورقة العمل؛ وتُهيئ ProtectWorkbook و UnprotectWorkbook بنية المصنف وأقفال النوافذ
AddHorizontalPageBreak و AddVerticalPageBreak فواصل صفحات يدوية لورقة العمل الحالية
تشخيصات تخزين القارئ المباشر
TXLSDirectReader.SharedStringMemoryLimit من ذاكرة السلاسل المشتركة المفكوكة، ويُبلّغ SharedStringsOnDisk عن الترحيل إلى تخزين مفهرس مؤقت، ويُبلّغ SharedStringCount عن عدد الإدخالات المحمَّلة، ويكشف ParallelDiag عن تشخيصات المحلل المتوازي المحدودة
إسقاط القارئ وحالة الصيغ
FirstRowو LastRowو IncludeColumnو ClearColumnProjection اختيار الصفوف والأعمدة (القائمة على الواحد) إلى محلل ورقة العمل قبل تخصيص القيم أو الصيغ أو النص الغني
IncludeFormulaText هو true؛ وتعطيله يحتفظ بالقيم المخزنة والإحداثيات والأنماط و HasFormula ، بينما تصبح FormulaTextAvailable بقيمة false ويظل Formula فارغًا
مؤشر الصف
TXLSRowCursor.Open ملفات أو تدفقات XLS وXLSX وXLSM وODS وCSV وTSV؛ ويميّز الكشف التلقائي لـ ZIP بين حزم ODS ومصنفات Open XML قبل فتح ورقة
SelectSheet و SelectSheetByName ورقة عمل؛ تكشف SheetCountو SheetNamesو SheetIndexو RowIndexو Eof عن حالة الاجتياز، بينما يطبّق SharedStringMemoryLimit نفس سياسة السلاسل المشتركة المحدودة المطبَّقة في القارئ المباشر
FirstRowو LastRowو IncludeColumnو ClearColumnProjection المرشِّحات ذات القاعدة الواحدة نفسها عبر جميع صيغ المؤشر؛ ولا يمكن تغيير خيارات التمرير بين FindFirst وEOF، لكنها تصبح قابلة للتغيير مجددًا بعد EOF أو اختيار الورقة أو الإغلاق
يبلّغ كل TXLSRowCursorCell عن HasFormula باستقلال تام عن FormulaTextAvailable؛ يكشف XLS الكلاسيكي وجود الصيغة والنتائج المخزنة دون الادعاء بتوفر نص الرموز، بينما يمكن لـ IncludeFormulaText كبح نص صيغ XLSX وODS قبل التراكم
يحتفظ اجتياز ODS بقالب صف فيزيائي واحد، ويقتطع كتل الصفوف المتكررة إلى المجال المطلوب، ويقفز مباشرة بين الأعمدة المحددة داخل المدى المتكرر، ويتقدم عبر الخلايا المغطاة دون إعادتها كقيم، ويبلّغ عن أعداد التكرار غير الصالحة أو المحدودة بالشبكة عبر OnSkippedRecord
State بين xrcsClosedو xrcsBeforeFirstو xrcsActiveو xrcsEofو xrcsCancelledو xrcsFaulted؛ و Cancel حتمي الأثر، ويبطل الصف الحالي، ويحرر تدفق ورقة العمل النشط مع الاحتفاظ بالمصدر كي يبدأ اختيار ورقة صريح تمريرة جديدة
يفترض الحمل الزائد للتدفق القيمة xsoBorrowedافتراضيًّا ويعيد موضع المتصل الابتدائي عند الإغلاق، ويقبل xsoOwned لنقل الملكية بعد فتح ناجح؛ ولا تستهلك محاولات الفتح الفاشلة ملكية المتصل أبدًا
CurrentRowView مصفوفة الصف الحالي دون نسخها ويفحص رقم الجيل قبل كل وصول؛ وتُبطل عملية التقدم أو التحديد أو الإلغاء أو الإغلاق أو التدمير العرضَ وترفع EXLSRowCursorViewInvalidated عند الوصول اللاحق
PeakRowBufferedBytes تقدير رتيب منذ آخر Open لسجلات الخلايا والحمولات المُدارة والنص الغني وبيانات خلفية التنسيق المحتفظ بها لصف منطقي واحد؛ والغرض منه تشخيصات انحدار للذاكرة المحدودة لا محاسبة دقيقة للكومة
SheetPassesStarted البدايات الناجحة لخلفية ورقة العمل؛ فحص أسماء الأوراق أو تخطي ورقة عبر واجهة معاودة الاتصال لا يفتح جزء ورقة العمل
محوِّل رد النداء الأمامي
TXLSForwardReader فك ترميز XLS وXLSX وODS وCSV وTSV إلى TXLSRowCursor، ويحوّل كل خلية من الصف الحالي إلى رد نداء OnCell ، ويحافظ على عقود حدود الصفوف وإسقاط الأعمدة وحالة الصيغ والنص الغني وكلمة المرور والسجلات المتخطاة وموضع التدفق والمخزن المؤقت المحدود نفسها
PeakRowBufferedBytes و SheetPassesStarted تشخيصات المؤشر المشتركة على سطح رد النداء، بينما يحتفظ XLS الكلاسيكي إضافةً إلى ذلك بـ ClassicBytesRead و ClassicPeakBufferedBytes
أحداث القارئ وأنواع السجلات
يكشف القارئ ومؤشر الصف عن عمليات رد نداء اختيارية وسجلات بسيطة، معلَنة كلها في lxDirectRead. يتبع كل رد نداء الشكل نفسه: يصف السجل عنصرًا واحدًا مُبثًّا، وضبط Abort يوقف المسح (وتقبل أحداث الأوراق إضافةً إلى ذلك SkipSheet)
| Cells | OnCell (من نوع TXLSDirectCellEvent) TXLSDirectCell لكل خلية، ويختار نوعها Kind (منTXLSDirectCellKind: xdkEmptyو xdkNumberو xdkStringو xdkBooleanو xdkDateو xdkError) حقل القيمة المملوء؛ وينتقل النص الغني بصيغة TXLSDirectRichText تحمل إدخالات TXLSDirectRichTextRun ، كلٌّ منها مع TXLSDirectRichColor (من نوع TXLSDirectRichColorKind) و TXLSDirectRichUnderlineو TXLSDirectRichVertAlign، إضافةً إلى بيانات TXLSDirectPhoneticProperties و TXLSDirectPhoneticRun الاختيارية |
| Sheet framing | OnSheet (TXLSDirectSheetEvent) تخطي ورقة عمل كاملة قبل تحليل خلاياها؛ ويبلّغ OnSkippedRecord (TXLSDirectSkippedEvent) عن محتوى مشوّه أو مبتور مع معرف السجل والسبب |
| Sheet layout | OnDimensionو OnSheetFormatو OnColumnو OnRowو OnMergeو OnPane سجلات TXLSDirectDimensionو TXLSDirectSheetFormatو TXLSDirectColumnو TXLSDirectRowو TXLSDirectMergeو TXLSDirectPane ؛ وتستخدم حالة الأجزاء TXLSDirectPaneState (xdpsSplitو xdpsFrozenو xdpsFrozenSplitو xdpsUnknown) |
| Cursor state | TXLSRowCursor.State من نوع TXLSRowCursorState (xrcsClosedو xrcsBeforeFirstو xrcsActiveو xrcsEofو xrcsCancelledو xrcsFaulted)؛ ويتلقى الحمل الزائد للتدفق في Open قيمة TXLSStreamOwnership (الافتراضيxsoBorrowed ، و xsoOwned لنقل الملكية)، ويعيد CurrentRowView عرضًا مستعارًا من IXLSRowCursorView تحمي خاصيته Valid الوصول وتقرأ ValueByCol خلية واحدة من الصف المستعار دون نسخ؛ ويُبطل العرض عند تقدم المؤشر |
أنواع معاملات الكاتب والأنماط
تقبل المساعدات المكتوبة الأنواع للكاتب (lxDirectWrite) سجلات وتعدادات كي تبقى الاستدعاءات خالية من التخصيص: يأخذ WriteRichString TXLSDirectRichText؛ ويبني AddCellStyle نمطًا على مستوى الحزمة من TXLSDirectCellStyle تعكس محاذاته (TXLSDirectHorizontalAlignmentو TXLSDirectVerticalAlignment) وتسطيره (TXLSDirectUnderline) ونمط تعبئته (TXLSDirectFillPattern) وأضلاع حدوده (TXLSDirectStyleBorder مع TXLSDirectBorderSide) نموذج أنماط OOXML. تمرر التنسيقات الشرطية TXLSDirectConditionalFormat مع TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind و TXLSDirectIconSetType، والتحقق من البيانات TXLSDirectDataValidation، والجداول TXLSDirectTable، والارتباطات التشعبية TXLSDirectHyperlink، والأسماء المعرَّفة TXLSDirectDefinedName، والأنماط التفاضلية TXLSDirectDxfStyle، والتعليقات TXLSDirectComment، والصور TXLSDirectImage مع TXLSDirectImageFormat، والمخططات TXLSDirectChart مع TXLSDirectChartSeries و TXLSDirectChartType، والدمجات TXLSDirectMergeRange، والنطاقات المحمية TXLSDirectProtectedRange، وحماية الورقة مجموعة TXLSDirectSheetProtectionOptions من TXLSDirectSheetProtectionOption، وحالة فرز التصفية التلقائية TXLSDirectSortState، وخيارات الأعمدة TXLSDirectColumnOption، وهندسة الصفحة سجل TXLSDirectPageMargins record
TXLSDirectNeedRow = procedure(Sender: TObject; RowIndex: Integer;
var Eof: Boolean) of object;
function XLSDirectColName(Col: Integer): WideString;
function XLSDirectParseRef(const Ref: WideString;
out Col, Row: Integer): Boolean;
function XLSDirectPasswordHash(const Password: WideString): WideString;
OnNeedRow الصفوف من التطبيق: يكتب المزود خلايا الصف مباشرة عبر الكاتب ويترك Eof = False، أو يعلن النفاد بقيمة Eof = True لإيقاف الحلقة. وتحوّل المساعدات بين الإحداثيات وبدائيات الحماية: يصيغ XLSDirectColName عمودًا صفري المؤشر بأحرف A1 الخاصة به، ويحلل XLSDirectParseRef مرجع خلية A1، ويحسب XLSDirectPasswordHash تجزئة كلمة المرور القديمة التي تخزنها سجلات حماية الورقة