Documentazione HotXLS

TXLSXExternalLink / TXLSXExternalLinks classes

Workbook-level collection of external workbook references (OOXML externalLinks part). Each entry describes one linked .xlsx file by its target URL e an optional list of sheet names drawn from the cached metadata inside the link part. The collection lives on TXLSXWorkbook.ExternalLinks Declared in lxHandleX

TXLSXExternalLink declaration

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

TXLSXExternalLink members

Target URL della cartella di lavoro esterna referenziata. Per una cartella di lavoro nella stessa directory usare un percorso relativo come '../Reports/Sales.xlsx'; for a network location use a full UNC o file URI. SaveAs writes this verbatim as the relationship target e into xl/externalLinks/externalLinkN.xml.rels
SheetNames Elenco facoltativo dei nomi dei fogli all'interno della cartella di lavoro esterna. Quando è popolato, SaveAs emette <sheetNames> children inside the <externalBook> elemento così Excel può risolvere i riferimenti tra cartelle di lavoro senza aprire il file collegato. Popolato automaticamente da Open durante il round-trip di una cartella di lavoro esistente. Lasciare vuoto quando si costruisce un collegamento da zero; Excel risolverà i nomi dei fogli alla successiva apertura del file esterno

TXLSXExternalLinks declaration

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 members

Add(Target) Appends a new external link with the given target URL e returns the new TXLSXExternalLink instance. Populate SheetNames on the returned object if known
IndexOfTarget / FindByTarget Locate the first external workbook link whose Target matches the requested path o URL. Matching is case-insensitive
DeleteByTarget / Delete / Clear Delete one link by target, delete one link by 0-based index, o clear the whole collection
Count / Items[Index] Ispeziona external links by 0-based index. Items is the default proprietà

SaveAs / Open behavior

When Workbook.ExternalLinks.Count > 0, SaveAs emits:
  • An <externalReferences> block in xl/workbook.xml with one <externalReference r:id="rIdN"/> per link
  • A relationship entry in xl/_rels/workbook.xml.rels pointing to externalLinks/externalLinkN.xml
  • xl/externalLinks/externalLinkN.xml containing the <externalBook> element with the target relation e optional <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels with the actual Target URL
Open round-trips Target e SheetNames; cached cell values inside <sheetDataSet> are not preserved by the current release

Esempio

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;
    

Vedere also