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
| Target |
URL 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 |
| SheetNames |
Optionale 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 / FindByTarget |
Findet 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 / Clear |
lö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 zeigt
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
SheetNames ab; 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