Documentação do HotXLS

Classes TXLSXExternalLink / TXLSXExternalLinks

Colecção ao nível do livro de referências a livros externos (parte OOXML externalLinks ). Cada entrada descreve um ficheiro .xlsx vinculado pela URL de destino e uma lista opcional de nomes de folhas TXLSXWorkbook.ExternalLinks Declared in lxHandleX

Declaração TXLSXExternalLink

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

Membros TXLSXExternalLink

TargetURL do livro de trabalho externo referenciado. Para um livro no mesmo diretório use um caminho relativo como '../Reports/Sales.xlsx'; para uma localização de rede use um UNC completo ou um URI de ficheiro. SaveAs escreve isto tal como está no target da relação e em xl/externalLinks/externalLinkN.xml.rels '../Reports/Sales.xlsx'; para uma localização de rede utilize um UNC completo ou um URI de ficheiro. O SaveAs escreve isto verbatim como destino da relação e em xl/externalLinks/externalLinkN.xml.rels
SheetNamesLista opcional de nomes de folhas dentro do livro externo. Quando preenchida, o SaveAs emite <sheetNames> children inside the <externalBook> para que o Excel possa resolver referências entre livros sem abrir o ficheiro ligado. Preenchida automaticamente por Open Lista opcional de nomes de folhas dentro do livro de trabalho externo. Quando preenchida, SaveAs emite elementos filhos <sheetNames> dentro do elemento <externalBook> para que o Excel possa resolver referências entre livros sem abrir o ficheiro associado. Preenchida automaticamente por Open ao fazer round-trip de um livro de trabalho existente. Deixe vazio quando construir uma ligação de raiz; o Excel resolverá os nomes das folhas na próxima vez que o ficheiro externo for aberto

Declaração 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;
      

Membros TXLSXExternalLinks

Add(Target)Acrescenta uma nova ligação externa com o URL de destino indicado e devolve a nova instância TXLSXExternalLink. Preencha SheetNames no objeto devolvido se forem conhecidos TXLSXExternalLink instance. Populate SheetNames on the returned object if known
IndexOfTarget / FindByTargetLocaliza a primeira ligação de livro externo cujo Target corresponde ao caminho ou URL pedido. A correspondência não distingue maiúsculas de minúsculas
DeleteByTarget / Delete / ClearLocaliza a primeira ligação de livro de trabalho externo cujo Target corresponde ao caminho ou URL pedido. A correspondência não diferencia maiúsculas de minúsculas
Count / Items[Index]Elimina uma ligação por target, elimina uma ligação por índice baseado em 0, ou limpa a coleção inteira Items Inspeciona ligações externas por índice baseado em 0. Items é a propriedade predefinida

Comportamento SaveAs / Open

Quando Workbook.ExternalLinks.Count > 0, o SaveAs emite:
  • Um bloco <externalReferences> em xl/workbook.xml com um <externalReference r:id="rIdN"/> por ligação
  • Uma entrada de relação em xl/_rels/workbook.xml.rels que aponta para externalLinks/externalLinkN.xml
  • xl/externalLinks/externalLinkN.xml com o elemento <externalBook> , a relação de destino e o opcional <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels com o URL Target real
Open faz a viagem de ida e volta de Target e SheetNames; os valores de célula em cache dentro de <sheetDataSet> não são preservados pela versão atual

Exemplo

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;
    

Ver também