Dokumentacja HotXLS

Klasy TXLSXExternalLink / TXLSXExternalLinks

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

TargetAdres 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 '../Reports/Sales.xlsx'; dla lokalizacji sieciowej użyj pełnej ścieżki UNC lub URI pliku. SaveAs zapisuje to dosłownie jako cel relacji i do xl/externalLinks/externalLinkN.xml.rels
SheetNamesOpcjonalna lista nazw arkuszy wewnątrz zewnętrznego skoroszytu. Gdy jest wypełniona, SaveAs emituje elementy potomne <sheetNames> wewnątrz elementu <externalBook> element, dzięki czemu Excel może rozwiązywać odwołania między skoroszytami bez otwierania połączonego pliku. Wypełniana automatycznie przez Open , 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 TXLSXExternalLink instance. Populate SheetNames on the returned object if known
IndexOfTarget / FindByTargetOdnajduje pierwszy zewnętrzny link do skoroszytu, którego Target 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 / Clearusunąć 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 URL
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ż