Dokumentace HotXLS

Třídy TXLSXExternalLink / TXLSXExternalLinks

Kolekce externích odkazů sešitu na úrovni sešitu (část OOXML externalLinks ). Každá položka popisuje jeden propojený soubor .xlsx pomocí cílové adresy URL a volitelného seznamu listů TXLSXWorkbook.ExternalLinks Declared in lxHandleX

Deklarace TXLSXExternalLink

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

Členové TXLSXExternalLink

TargetURL odkazovaného externího workbooku. Pro workbook ve stejné složce použijte relativní cestu jako '../Reports/Sales.xlsx'; pro síťové umístění použijte plný UNC nebo file URI. SaveAs to zapíše doslova jako cílový vztah i do xl/externalLinks/externalLinkN.xml.rels '../Reports/Sales.xlsx'; pro síťové umístění použijte plný UNC nebo file URI. SaveAs to zapíše doslova jako cíl relace a do xl/externalLinks/externalLinkN.xml.rels
SheetNamesVolitelný seznam názvů listů uvnitř externího workbooku. Pokud je vyplněn, SaveAs zapíše potomky <sheetNames> uvnitř elementu <externalBook> elementu, aby Excel mohl vyřešit odkazy napříč sešity bez otevření propojeného souboru. Vyplňuje se automaticky při Open , aby Excel mohl vyřešit odkazy napříč workbooky bez otevření propojeného souboru. Při round-trip existujícího workbooku se vyplní automaticky při Open. Ponechte prázdné při sestavování odkazu od nuly; Excel názvy listů vyřeší při příštím otevření externího souboru

Deklarace 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;
      

Členové TXLSXExternalLinks

Add(Target)Připojí nový externí odkaz se zadanou cílovou URL a vrátí novou instanci TXLSXExternalLink. Pokud jsou SheetNames známy, vyplňte je v navráceném objektu TXLSXExternalLink instance. Populate SheetNames on the returned object if known
IndexOfTarget / FindByTargetNajde první odkaz na externí sešit, jehož Target odpovídá požadované cestě či URL. Porovnávání nerozlišuje velikost písmen
DeleteByTarget / Delete / ClearNajde první odkaz na externí workbook, jehož Target odpovídá požadované cestě nebo URL. Porovnávání není závislé na velikosti písmen
Count / Items[Index]Smaže jeden odkaz podle cíle, smaže jeden odkaz podle 0-based indexu nebo vymaže celou kolekci Items Prozkoumává externí odkazy podle 0-based indexu. Items je výchozí vlastnost

Chování SaveAs / Open

Když je Workbook.ExternalLinks.Count > 0, SaveAs emituje:
  • Blok <externalReferences> v xl/workbook.xml s jedním <externalReference r:id="rIdN"/> na každý odkaz
  • Záznam relace v xl/_rels/workbook.xml.rels ukazující na externalLinks/externalLinkN.xml
  • xl/externalLinks/externalLinkN.xml obsahující element <externalBook> s cílovou relací a volitelnými <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels se skutečnou URL Target URL
Open provede Roundtrip Target a SheetNames; cacheované hodnoty buněk uvnitř <sheetDataSet> aktuální verze nezachovává

Příklad

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;
    

Viz také