مستندات HotXLS

مرجع القارئ والكاتب المباشر

TXLSDirectReader و TXLSDirectWriter حزم XLSX دون الاحتفاظ بشبكة ورقة عمل كاملة في الذاكرة، لذلك يجب إجراء استدعاءات API التي تصف ورقة قبل مرحلة البث المقابلة أو أثناءها

دورة حياة الكاتب وقيم الخلايا

TXLSDirectWriter.BeginFile أو BeginStream حزمة، وتعرّف طرق الورقة ورقة عمل واحدة في كل مرة، ويلتزم Finish بالحزمة النهائية

Scalar cellsWriteStringو WriteRichStringو WriteNumberو WriteBooleanو WriteDateTimeو WriteError
Formula cellsWriteFormulaو WriteFormulaNumberو WriteFormulaStringو WriteFormulaBooleanو WriteFormulaDateTimeو WriteFormulaError نتائج مخزنة مقدَّمة من المتصل
Shared stringsUseSharedStrings إلغاء تكرار السلاسل على مستوى الحزمة
StatisticsCellCount عن عدد الخلايا المُخرَجة
PanesFreezePanes(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)

CellsOnCell (من نوع TXLSDirectCellEvent‎) ‏ TXLSDirectCell لكل خلية، ويختار نوعها Kind (منTXLSDirectCellKind: ‏ xdkEmptyو xdkNumberو xdkStringو xdkBooleanو xdkDateو xdkError) حقل القيمة المملوء؛ وينتقل النص الغني بصيغة TXLSDirectRichText تحمل إدخالات TXLSDirectRichTextRun ، كلٌّ منها مع TXLSDirectRichColor (من نوع TXLSDirectRichColorKind) و TXLSDirectRichUnderlineو TXLSDirectRichVertAlign، إضافةً إلى بيانات TXLSDirectPhoneticProperties و TXLSDirectPhoneticRun الاختيارية
Sheet framingOnSheet ‏(TXLSDirectSheetEvent‎) تخطي ورقة عمل كاملة قبل تحليل خلاياها؛ ويبلّغ OnSkippedRecord ‏(TXLSDirectSkippedEvent‎) عن محتوى مشوّه أو مبتور مع معرف السجل والسبب
Sheet layoutOnDimensionو OnSheetFormatو OnColumnو OnRowو OnMergeو OnPane سجلات TXLSDirectDimensionو TXLSDirectSheetFormatو TXLSDirectColumnو TXLSDirectRowو TXLSDirectMergeو TXLSDirectPane ؛ وتستخدم حالة الأجزاء TXLSDirectPaneState ‏(xdpsSplitو xdpsFrozenو xdpsFrozenSplitو xdpsUnknown)
Cursor stateTXLSRowCursor.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 تجزئة كلمة المرور القديمة التي تخزنها سجلات حماية الورقة

انظر أيضًا