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
lxHandleXDeclaración de TXLSXExternalLink
type
TXLSXExternalLink = class
constructor Create(const ATarget: WideString);
destructor Destroy; override;
property Target: WideString;
property SheetNames: TStringList;
end;
Miembros de TXLSXExternalLink
| Target | URL 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 |
| SheetNames | Lista 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 / FindByTarget | Localiza 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 / Clear | elimina 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