Kolekcja na poziomie skoroszytu odwołań do zewnętrznych skoroszytów (część OOXML
externalLinks). Każdy wpis opisuje jeden połączony plik .xlsx przez docelowy URL i opcjonalną listę nazw arkuszy pobraną z metadanych w pamięci podręcznej wewnątrz części linku. Kolekcja znajduje się na
TXLSXWorkbook.ExternalLinks; zadeklarowana w
lxHandleX
Deklaracja TXLSXExternalLink
type
TXLSXExternalLink = class
constructor Create(const ATarget: WideString);
destructor Destroy; override;
property Target: WideString;
property SheetNames: TStringList;
end;
Elementy TXLSXExternalLink
| Target |
Adres URL odwoływanego zewnętrznego Workbook. Dla
Workbook w tym samym katalogu użyj ścieżki względnej, na przykład
'../Reports/Sales.xlsx'; dla lokalizacji sieciowej użyj
pełnego UNC lub file URI. SaveAs zapisuje to dosłownie jako
cel relacji i do
xl/externalLinks/externalLinkN.xml.rels |
| SheetNames |
Opcjonalna lista nazw arkuszy wewnątrz zewnętrznego skoroszytu. Gdy jest wypełniona, SaveAs emituje elementy potomne wewnątrz elementu , aby Excel mógł rozwiązać odwołania między skoroszytami bez otwierania połączonego pliku. Wypełniane automatycznie przez Open podczas round-tripping istniejącego skoroszytu. Pozostaw puste podczas budowania linku od zera; Excel rozwiąże nazwy arkuszy przy następnym otwarciu pliku zewnętrznego |
Deklaracja 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;
Elementy TXLSXExternalLinks
| Add(Target) |
Dodaje nowy link zewnętrzny z podanym docelowym URL i zwraca nową instancję TXLSXExternalLink. Jeśli znasz nazwy arkuszy, wypełnij SheetNames w zwróconym obiekcie |
| IndexOfTarget / FindByTarget |
Odnajduje pierwszy zewnętrzny link do skoroszytu, którego Target odpowiada żądanej ścieżce lub adresowi URL. Dopasowanie nie uwzględnia wielkości liter |
| DeleteByTarget / Delete / Clear |
usunąć jeden link przez target, usunąć jeden link przez 0-oparty indeks, lub clear whole kolekcja |
| Count / Items[Index] |
Sprawdź external links przez 0-oparty indeks. Items jest default właściwość |
Zachowanie SaveAs / Open
Gdy
Workbook.ExternalLinks.Count > 0, SaveAs emituje:
- Blok
<externalReferences> w xl/workbook.xml z jednym <externalReference r:id="rIdN"/> na link - Wpis relacji w
xl/_rels/workbook.xml.rels wskazujący na externalLinks/externalLinkN.xml xl/externalLinks/externalLinkN.xml zawierający element <externalBook> z relacją docelową i opcjonalnymi <sheetNames>xl/externalLinks/externalLinkN.xml.rels z rzeczywistym URL Target
Open przywraca
Target i
SheetNames; buforowane wartości komórek wewnątrz
<sheetDataSet> nie są zachowywane przez bieżące wydanie
Przykład
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;
Zobacz też