Documentación de HotXLS

Clase TXLSXExternalLinks

Colección a nivel de libro de trabajo de referencias a libros externos (parte externalLinks de OOXML). Cada entrada describe un archivo .xlsx vinculado mediante su URL de destino y una lista opcional de nombres de hoja tomada de los metadatos cacheados dentro de la parte del vínculo. La colección vive en TXLSXWorkbook.ExternalLinks. Declarada en lxHandleX

Declaración de TXLSXExternalLink

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

Miembros de TXLSXExternalLink

TargetURL del libro externo referenciado. Para un libro en el mismo directorio usa una ruta relativa como '../Reports/Sales.xlsx'; para una ubicación de red usa una ruta UNC completa o una URI file. SaveAs la escribe tal cual como destino de la relación y en xl/externalLinks/externalLinkN.xml.rels '../Reports/Sales.xlsx'; para una ubicación de red use una ruta UNC completa o un URI de archivo. SaveAs lo escribe tal cual como destino de la relación y en xl/externalLinks/externalLinkN.xml.rels
SheetNamesLista opcional de nombres de hoja dentro del libro externo. Cuando se rellena, SaveAs emite <sheetNames> children inside the <externalBook> para que Excel pueda resolver referencias entre libros sin abrir el archivo vinculado. Se rellena automáticamente por Open Lista opcional de nombres de hoja dentro del libro externo. Cuando se rellena, SaveAs emite elementos secundarios <sheetNames> dentro del elemento <externalBook> para que Excel pueda resolver referencias entre libros sin abrir el archivo vinculado. Open la rellena automáticamente al hacer round-tripping de un libro existente. Déjala vacía al crear un vínculo desde cero; Excel resolverá los nombres de hoja la próxima vez que se abra el archivo externo

Declaración de 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;
      

Miembros de TXLSXExternalLinks

Add(Target)Añade un nuevo vínculo externo con la URL de destino indicada y devuelve la nueva instancia de TXLSXExternalLink. Rellene SheetNames en el objeto devuelto si los conoce TXLSXExternalLink instance. Populate SheetNames on the returned object if known
IndexOfTarget / FindByTargetLocaliza el primer vínculo de libro externo cuyo Target Localiza el primer vínculo de libro externo cuyo Target coincide con la ruta o URL solicitada. La comparación no distingue mayúsculas y minúsculas
DeleteByTarget / Delete / Clearelimina un vínculo por target, elimina un vínculo por índice basado en 0 o vacía toda la colección
Count / Items[Index]Inspecciona los vínculos externos por índice basado en 0. Items es la propiedad predeterminada

Comportamiento en SaveAs/Open

Cuando Workbook.ExternalLinks.Count > 0, SaveAs emite:
  • Un bloque <externalReferences> en xl/workbook.xml con un <externalReference r:id="rIdN"/> por cada vínculo
  • Una entrada de relación en xl/_rels/workbook.xml.rels que apunta a externalLinks/externalLinkN.xml
  • xl/externalLinks/externalLinkN.xml que contiene el elemento <externalBook> con el destino de la relación y los <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels Un archivo Target con la URL real de
Open conserva Target y SheetNamesen el round-trip; los valores de celda cacheados dentro de <sheetDataSet> no se conservan en la versión actual

Ejemplo

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;
    

Véase también