متد CreateReadOnlyView
نمای سبکی فقطخواندنی روی مدل کتاب کار کلاسیک یا XLSX بارگذاریشده میسازد
نحو
function CreateReadOnlyView: IXLSReadOnlyWorkbookView;
CreateReadOnlyView در IXLSWorkbook کلاسیک در lxHandle و در IXLSXWorkbookOwner مخصوص XLSX در lxHandleX اعلام شده است؛ رابط نمای مشترک، گزینهها و انواع تصویر لحظهای در lxStandard اعلام شدهاند
وضعیت نما و طول عمر
ساخت نما زمان ثابت میبرد و کاربرگها، سلولها، سبکها، نامها یا شکلها را پیمایش نمیکند
هر نما ActiveSheetIndex مبتنی بر یک مخصوص به خود را دارد، بهطوری که چند نما میتوانند کاربرگهای متفاوتی را برگزینند بدون آنکه ActiveSheetIndex کلاسیک یا ActiveIndex، IsSelected و ActiveTab در XLSX تغییر کند
نما تا زمان وجودش اجاره خواندن را نگه میدارد و تغییرات کتاب کار با استثنای EXLSWorkbookWriteGuardUnavailable پیش از تغییر مدل، بهسرعت شکست میخورند
هنگام استفاده از نماها، کتابهای کاری کلاسیک را از طریق IXLSWorkbook و کتابهای کاری XLSX را از طریق IXLSXWorkbookOwner نگه دارید؛ در آن صورت رابط مالک و هر نما به همان کتاب کار شمارشمرجعی ارجاع دارند و میتوانند به هر ترتیبی آزاد شوند
Free را روی TXLSWorkbook یا TXLSXWorkbook ملموس فرا نخوانید تا وقتی رابط مالک یا نمایی هنوز به آن ارجاع دارد
تصاویر لحظهای سلول
TryReadCell از مختصات سطر و ستون مبتنی بر یک روی کاربرگ فعال نما استفاده میکند و تنها زمانی False برمیگرداند که در آن مختصات هیچ سلول ذخیرهشدهای وجود نداشته باشد
خواندن سلول ناموجود، فضای ذخیرهسازی نمیسازد و نسل کتاب کار را پیش نمیبرد
TXLSReadOnlyCellSnapshot مالک نام کاربرگ، مقدار، متن فرمول، اطلاعات حافظه پنهان و ارزیابی، مختصات، نوع و اندیس سبک خود است و هرگز شیء کتاب کار قابل نوشتن را افشا نمیکند
| فیلد | معنی |
|---|---|
SheetIndex / SheetName | هویت کاربرگ محلی به نما |
Row / Col | مختصات سلول مبتنی بر یک |
StyleIndex | اندیس XF کلاسیک ذخیرهشده یا اندیس قالب سلول XLSX |
Kind | طبقهبندی متن، عدد، تاریخ-زمان، منطقی، فرمول، خطا یا خالی |
Value | مقدار اسکالر ذخیرهشده یا مقدار حافظه پنهان فرمول، بدون محاسبه مجدد |
HasFormulaCache / FormulaCache | وجود حافظه پنهان فرمول، منشأ آن، نوع مقدار و مقدار ذخیرهشده متعلق به فراخوان |
FormulaEvaluation | اینکه ارزیابی قابلاجرا نبود، درخواست نشد، محاسبه شد یا شکست خورد، همراه با کد نتیجه ارزیاب و مقدار نتیجه متعلق به فراخوان |
Formula | بهطور پیشفرض خالی است و فقط وقتی متن فرمول صریحاً فعال شود پر میشود |
سیاست فرمول
بهطور پیشفرض سلولهای فرمولدار از حافظه پنهان ذخیرهشده موجود استفاده میکنند و هرگز محاسبه نمیکنند، تابع کاربر را فرا نمیخوانند، وضعیت کهنگی را بهروزرسانی نمیکنند و حافظه پنهانی را به کتاب کار بازنمینویسند
وقتی به متن فرمول نیاز دارید، xlsvIncludeFormulaText را به Options بیفزایید؛ Classic در صورت نیاز کدگشای مخصوص نما میسازد و XLSX رشته فرمول ذخیرهشده خود را کپی میکند و هیچیک از این دو مسیر ماشین حساب کتاب کار را مقداردهی یا تغییر نمیدهند
فرمولی که حافظه پنهان بارگذاریشده یا محاسبهشده ندارد، HasFormulaCache=False گزارش میکند و Value را برابر Unassigned میگذارد
برای ارزیابی فرمولها از طریق ماشین حساب مخصوص نما، وضعیت بازگشتی، حافظه پنهان اسکالر، حافظه پنهان ماتریس آرایهای و حافظه پنهان فرمول کامپایلشده XLSX، xlsvEvaluateFormulas را بیفزایید؛ مقدار Value و FormulaEvaluation.Value حاصل هرگز حافظه پنهان ذخیرهشده کتاب کار یا فیلدهای زمان اجرای فرمول کامپایلشده را جایگزین نمیکنند
خطاهای استاندارد صفحهگسترده بهصورت مقادیر خطای Variant با xlfesCalculated برگردانده میشوند، در حالی که شکستهای ارزیابی پشتیبانینشده یا داخلی xlfesFailed گزارش میکنند و حافظه پنهان ذخیرهشده اصلی را در FormulaCache نگه میدارند
خواندنهای مکرر از طریق یک نما، حافظه پنهان ارزیابی خصوصی آن را برای نسل اجاره دوباره به کار میگیرند، در حالی که نماهای متفاوت مستقل میمانند و میتوانند همان فرمول مشترک را بهطور همزمان ارزیابی کنند
ارزیابی فرمول خارجی XLSX فقط حافظه پنهان externalLink محلی فایل را میخواند و هرگز ارجاع ثبت ضعیف کتاب کار زنده را برنمیتابد یا ورودی/خروجی خارجی انجام نمیدهد
رشتههای اجرا و عملکرد
برای هر رشته اجرای کارگر از یک نما استفاده کنید؛ نماهای جدا میتوانند کاربرگهای متفاوت را پویش کنند یا همان فرمول را همزمان ارزیابی کنند، اما فراخوانها نباید کاربرگ فعال یا گزینههای یک نما را از رشته دیگری تغییر دهند
پس از ساخت، خواندنهای معمولی سلول وارد مانیتور یا بخش بحرانی نمیشوند، زیرا اجاره خواندن از تغییر همزمان کتاب کار جلوگیری میکند
اعتبارسنجی آزادسازی هر نمای بیکار را زیر 64 کیلوبایت وضعیت ثابت، صد نمای بیکار را زیر 8 مگابایت و ساخت نما را مستقل از اندازه کتاب کار با گیت صد نودختم 95 درصد یکمیلیثانیهای روی مدل یکمیلیونسلولی نگه میدارد
مجموعه آزمون عملکرد همچنین اثر نمای بیکار بر پویشهای مکاننمای تکرشته موجود را به پنج درصد محدود میکند و نیاز دارد هشت نمای پویشکننده کاربرگهای مستقل، دستکم پنج برابر توان عملیاتی نمای واحد را روی میزبان اعتبارسنجی به دست آورند
مثال
var
Workbook: IXLSWorkbook;
View: IXLSReadOnlyWorkbookView;
Cell: TXLSReadOnlyCellSnapshot;
begin
Workbook := TXLSWorkbook.Create;
Workbook.Sheets.Add;
Workbook.Sheets[1].Cells[1, 1].Value := 'ready';
View := Workbook.CreateReadOnlyView;
View.Options := [xlsvEvaluateFormulas];
if View.TryReadCell(1, 1, Cell) then
Memo1.Lines.Add(VarToStr(Cell.Value));
end;
برای XLSX، پیش از ساخت نماها کتاب کار ملموس را از طریق رابط مالک آن نگه دارید
var
Owner: IXLSXWorkbookOwner;
Workbook: TXLSXWorkbook;
View: IXLSReadOnlyWorkbookView;
begin
Workbook := TXLSXWorkbook.Create;
Owner := Workbook;
Workbook.Sheets.Add('Data').Cells[1, 1].Value := 42;
View := Owner.CreateReadOnlyView;
end;