مستندات HotXLS

الأسلوب CreateLoadedCellCursor

ينشئ مؤشر سحب فوق الخلايا المخزنة في مصنف XLSX محمّل، مع خيار لتضمين الخلايا الفارغة المنمّطة بشكل مستقل

البنية

function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
function CreateLoadedCellCursor(
  AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;

ترتيب التجول وتكلفته

يزور المؤشر أوراق العمل بترتيبها في المجموعة، ثم الخلايا بترتيب تصاعدي حسب الصف والعمود

تشكل SheetIndex وRow وCol إحداثيات عامة تبدأ من الواحد

تُقرأ أوراق العمل المجسدة مباشرة من كتلها المتناثرة المخصصة البالغ حجمها 256 صفًا دون بناء قائمة خلايا مرتبة

تُقرأ أوراق العمل المعبأة مباشرة عبر مكرر التخزين المعبأ وتبقى معبأة بعد التجول

حالة المؤشر ثابتة لا تتغير مع حجم المصنف ولا تخصص مصفوفات بحجم حدود صفوف أو أعمدة XLSX

يتخطى التحميل الزائد بلا معاملات الخلايا الفارغة المنمّطة فقط والعناصر النائبة Empty والعناصر النائبة Null المخزنة

مرر True لتضمين الإحداثيات الفارغة المنمّطة بشكل مستقل من التخزين المجسد أو المعبأ دون تجسيد الخلايا المعبأة

تبقى العناصر النائبة Empty وNull غير المنمّطة مستثناة في كلا الوضعين

حقول اللقطة

الحقلالمعنى
SheetIndex / SheetNameهوية ورقة العمل المالكة لحظة الالتقاط
Row / Colإحداثيات الخلية بدءًا من الواحد
StyleIndexفهرس تنسيق خلية XLSX الملتقط من التخزين المجسد أو المعبأ
KindxlckText أو xlckNumber أو xlckDateTime أو xlckBoolean أو xlckFormula أو xlckError أو xlckBlank
Valueقيمة Variant مملوكة التُقطت للخلية الحالية
Formulaنص الصيغة لخلايا الصيغ، أو سلسلة فارغة غير ذلك

السلاسل وقيم Variant في TXLSLoadedCellSnapshot قيم مملوكة ولا تكشف مؤشرات الخلايا الداخلية أو مؤشرات التخزين المعبأ

في خلايا صيغ XLSX، تمثل Value القيمة المخزنة مؤقتًا حاليًا ولا يعيد التجول حساب الصيغة

بالنسبة إلى xlckBlank، تكون Value تساوي Unassigned وFormula فارغة ويحدد StyleIndex تنسيق الخلية المخزن

الحالة والإبطال والعمر

تبقى State تساوي xlccBeforeFirst حتى أول استدعاء ناجح لـ MoveNext، وتساوي xlccActive ما دامت Current متاحة، وتساوي xlccEof بعد اكتمال التجول

تؤدي قراءة Current قبل الخلية الأولى أو بعد نهاية الملف إلى رفع EXLSLoadedCellCursorState

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

يرفع استدعاء MoveNext أو Current التالي عندها الاستثناء EXLSLoadedCellCursorInvalidated

لا يؤدي تغيير قيمة خلية قائمة أو صيغتها أو تنسيقها إلى إبطال المؤشر، وتبقى اللقطة الملتقطة سابقًا كما هي

يؤدي تحرير المصنف قبل المؤشر أيضًا إلى رفع EXLSLoadedCellCursorInvalidated بدل ترك المؤشر بمؤشر معلق إلى مصنف

التحقق من التوليد كشف فاشل سريعًا ولا يجعل التعديل المتوازي والتجول آمنين على مؤشرات الترابط

مثال

Cursor := Workbook.CreateLoadedCellCursor;
while Cursor.MoveNext do
begin
  Cell := Cursor.Current;
  Memo1.Lines.Add(Format('%s!R%dC%d = %s',
    [Cell.SheetName, Cell.Row, Cell.Col, VarToStr(Cell.Value)]));
end;

انظر أيضًا