توثيق HotXLS

الفئتان TXLSXExternalLink / TXLSXExternalLinks

مجموعة مراجع المصنفات الخارجية على مستوى المصنف (جزء externalLinks في OOXML). يصف كل إدخال ملف .xlsm/.xlsx مرتبطاً واحداً TXLSXWorkbook.ExternalLinks Declared in lxHandleX

إعلان TXLSXExternalLink

type
  TXLSXExternalLink = class
    constructor Create(const ATarget: WideString);
    destructor Destroy; override;
    property Target: WideString;
    property SheetNames: TStringList;
  end;
      

أعضاء TXLSXExternalLink

TargetTarget. عنوان URL للمصنف الخارجي المشار إليه. لمصنف في المجلد نفسه استخدم مسارًا نسبيًا مثل '../Reports/Sales.xlsx'؛ ولموقع شبكي استخدم UNC كاملًا أو file URI. يكتب SaveAs هذا النص كما هو كهدف للعلاقة وداخل xl/externalLinks/externalLinkN.xml.rels '../Reports/Sales.xlsx'؛ وللموقع الشبكي استخدم مسار UNC كاملًا أو ملف URI. ويكتب SaveAs هذا النص حرفيًا بوصفه هدف العلاقة وفي xl/externalLinks/externalLinkN.xml.rels
SheetNamesقائمة اختيارية بأسماء الأوراق داخل المصنف الخارجي. عند تعبئتها، يُصدِر SaveAs <sheetNames> children inside the <externalBook> كي يتمكن Excel من حل المراجع بين المصنفات دون فتح الملف المرتبط. تُعبَّأ تلقائيًا بواسطة Open قائمة اختيارية بأسماء الأوراق داخل المصنف الخارجي. عند وجودها، يصدر SaveAs عناصر <sheetNames> داخل عنصر <externalBook> حتى يتمكن Excel من حل المراجع بين المصنفات من دون فتح الملف المرتبط. يملؤها Open تلقائيًا عند إعادة تمرير مصنف موجود. اتركها فارغة عند بناء ارتباط من الصفر؛ سيحل Excel أسماء الأوراق في المرة التالية التي يُفتح فيها الملف الخارجي

إعلان TXLSXExternalLinks

type
  TXLSXExternalLinks = class
    constructor Create;
    destructor Destroy; override;
    function Add(const ATarget: WideString): TXLSXExternalLink;
    function IndexOfTarget(const ATarget: WideString): Integer;
    function FindByTarget(const ATarget: WideString): TXLSXExternalLink;
    function DeleteByTarget(const ATarget: WideString): Boolean;
    procedure Delete(Index: Integer);
    procedure Clear;
    property Count: Integer;
    property Items[Index: Integer]: TXLSXExternalLink; default;
  end;
      

أعضاء TXLSXExternalLinks

Add(Target)يضيف ارتباطًا خارجيًا جديدًا بعنوان URL الهدف المعطى ويعيد مثيل TXLSXExternalLink الجديد. املأ SheetNames في الكائن المُعاد إذا كانت معروفة TXLSXExternalLink instance. Populate SheetNames on the returned object if known
IndexOfTarget / FindByTargetتحدد موقع أول ارتباط مصنف خارجي يكون Target فيه مطابقًا للمسار أو عنوان URL المطلوب. والمطابقة لا تراعي حالة الأحرف
DeleteByTarget / Delete / Clearيحدد موقع أول رابط إلى مصنف خارجي يكون Target الخاص به مطابقًا للمسار أو الرابط المطلوب. المطابقة غير حساسة لحالة الأحرف
Count / Items[Index]حذف واحد link بواسطة target, حذف واحد link بواسطة 0-مستند فهرس, أو clear whole مجموعة Items يفحص الروابط الخارجية بفهرس بدءًا من 0. Items هي الخاصية الافتراضية

سلوك SaveAs / Open

عندما يكون Workbook.ExternalLinks.Count > 0، يُصدِر SaveAs:
  • كتلة <externalReferences> في xl/workbook.xml مع <externalReference r:id="rIdN"/> واحد لكل ارتباط
  • إدخال علاقة في xl/_rels/workbook.xml.rels يشير إلى externalLinks/externalLinkN.xml
  • xl/externalLinks/externalLinkN.xml يحتوي على العنصر <externalBook> مع علاقة الهدف و <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels مع عنوان URL الفعلي للـ Target URL
Open round-trips Target and SheetNames; cached cell values inside <sheetDataSet> لا تُحفظ في الإصدار الحالي

مثال

var
  wb: TXLSXWorkbook;
  link: TXLSXExternalLink;
begin
  wb := TXLSXWorkbook.Create;
  try
    link := wb.ExternalLinks.Add('../Data/Source.xlsx');
    link.SheetNames.Add('Sheet1');
    link.SheetNames.Add('Sheet2');
    wb.Sheets.Add('Report');
    wb.Sheets[0].Cells.Item[1, 1].Formula :=
      '[Source.xlsx]Sheet1!$A$1';
    wb.SaveAs('report.xlsx');
  finally
    wb.Free;
  end;
end;
    

انظر أيضاً