HotXLS 文档

TXLSXExternalLink / TXLSXExternalLinks classes

Workbook-level collection of external workbook references (OOXML externalLinks part)。每个条目描述一个被链接的 .xlsx 文件:目标 URL 加一个可选的工作表名称列表,名称取自链接 part 内缓存的元数据。该集合位于 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。工作簿在同一目录时使用相对路径,例如 '../Reports/Sales.xlsx';如果是网络位置,请使用完整的 UNC 路径或 file URI。SaveAs 会把它按原样写成关系目标,并写入 xl/externalLinks/externalLinkN.xml.rels
SheetNames 外部工作簿内的工作表名称可选列表。填充后,SaveAs 会发出 <sheetNames> children inside the <externalBook> 元素,这样 Excel 不打开被链接的文件也能解析跨工作簿引用。自动填充者是 Open 时才需要填充(对既有工作簿做往返的场景)。从零构建链接时留空;下次打开外部文件时,Excel 会解析出工作表名称

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 and 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 or URL. Matching is case-insensitive
DeleteByTarget / Delete / Clear 按目标删除一条链接、按从 0 开始的索引删除一条链接,或清空整个集合
Count / Items[Index] Inspect external links by 0-based index. Items is the default property

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 and optional <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels with the actual Target URL
Open round-trips Target and SheetNames; cached cell values inside <sheetDataSet> are not preserved by the current release

示例

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;
    

请参阅