HotXLS-Dokumentation

TXLSXExternalLink / TXLSXExternalLinks-Klassen

Sammlung auf Arbeitsmappenebene mit Verweisen auf externe Arbeitsmappen (OOXML- externalLinks -Teil). Jeder Eintrag beschreibt eine verknüpfte .xlsx- Datei durch ihre Ziel-URL und eine optionale Liste von Blattnamen aus den gecachten Metadaten innerhalb des Link-Teils. Die Sammlung befindet sich auf TXLSXWorkbook.ExternalLinks Deklariert in lxHandleX

TXLSXExternalLink-Deklaration

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

TXLSXExternalLink-Elemente

TargetURL der referenzierten externen Arbeitsmappe. Verwenden Sie für eine Arbeitsmappe im gleichen Verzeichnis einen relativen Pfad wie '../Reports/Sales.xlsx'; für einen Netzwerkpfad verwenden Sie eine vollständige UNC- oder file-URI. SaveAs schreibt dies unverändert als Beziehungsziel und in xl/externalLinks/externalLinkN.xml.rels
SheetNamesOptionale Liste von Blattnamen in der externen Arbeitsmappe. Wenn sie gefüllt ist, schreibt SaveAs <sheetNames> -Kindelemente in das <externalBook> -Element, damit Excel workbook-übergreifende Verweise auflösen kann, ohne die verknüpfte Datei zu öffnen. Wird beim Roundtrip einer vorhandenen Arbeitsmappe automatisch von Open gefüllt. Lassen Sie sie leer, wenn Sie einen Link von Grund auf erstellen; Excel löst die Blattnamen auf, sobald die externe Datei das nächste Mal geöffnet wird

TXLSXExternalLinks-Deklaration

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-Elemente

Add(Target)Hängt einen neuen externen Link mit der angegebenen Ziel-URL an und gibt die neue TXLSXExternalLink -Instanz zurück. Füllen Sie SheetNames im zurückgegebenen Objekt, falls bekannt
IndexOfTarget / FindByTargetFindet den ersten Link zu einer externen Arbeitsmappe, dessen Target mit dem angeforderten Pfad oder der URL übereinstimmt. Der Vergleich ist nicht case-sensitiv
DeleteByTarget / Delete / Clearlöschen ein link durch target, löschen ein link durch 0-basiert Index, oder clear whole Auflistung
Count / Items[Index]Prüfen external links durch 0-basiert Index. Items ist default Eigenschaft

SaveAs / Open-Verhalten

Wenn Workbook.ExternalLinks.Count > 0, gibt SaveAs aus:
  • Einen <externalReferences> -Block in xl/workbook.xml mit einem <externalReference r:id="rIdN"/> pro Link
  • Einen Beziehungseintrag in xl/_rels/workbook.xml.rels , der auf externalLinks/externalLinkN.xml
  • xl/externalLinks/externalLinkN.xml mit dem <externalBook> -Element mit der Zielbeziehung und optionalen <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels mit der tatsächlichen Target -URL
Open rundet Target und SheetNamesab; gecachte Zellenwerte innerhalb <sheetDataSet> werden von der aktuellen Version nicht erhalten

Beispiel

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;
    

Siehe auch