HotXLS ドキュメント

TXLSXExternalLink / TXLSXExternalLinks クラス

外部ワークブック参照のワークブックレベルコレクション(OOXML の externalLinks パート)です。各エントリは、ターゲット URL とリンクパート内のキャッシュメタデータから取得したオプションのシート名リストによって、リンクされた .xlsx ファイルを記述します。コレクションは TXLSXWorkbook.ExternalLinks にあり、 lxHandleX

TXLSXExternalLink 宣言

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

TXLSXExternalLink メンバー

Target参照される外部 workbook の URL 同じディレクトリなら '../Reports/Sales.xlsx' のような相対 path を使う ネットワークの場所なら完全な UNC または file URI を使う SaveAs はこれを relationship target としてそのまま書き込み xl/externalLinks/externalLinkN.xml.rels に入れる '../Reports/Sales.xlsx' ネットワーク上の場所には、完全な UNC または file URI を使用してください。SaveAs は、これをリレーションシップ ターゲットとして、 xl/externalLinks/externalLinkN.xml.rels
SheetNames外部 Workbook 内のシート名の省略可能な一覧。値が入ると、SaveAs は <sheetNames> 要素内に <externalBook> 要素に書き込まれるため、Excel はリンク先ファイルを開かずにワークブック間参照を解決できます。自動設定は Open 子要素を出力し、Excel はリンク先ファイルを開かずにブック間参照を解決できます。既存 Workbook の往復処理では Open により自動的に設定されます。リンクを新規作成する場合は空のままにしてください。Excel は次回その外部ファイルを開くときにシート名を解決します

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;
      

TXLSXExternalLinks メンバー

Add(Target)指定したターゲット URL で新しい外部リンクを追加し 新しい TXLSXExternalLink インスタンスを返す 返されたオブジェクトの SheetNames は分かっている場合に設定する TXLSXExternalLink instance. Populate SheetNames on the returned object if known
IndexOfTarget / FindByTarget最初の外部ワークブック リンクを検索します。一致の対象は Target Target が要求されたパスまたは URL と一致する最初の外部 Workbook リンクを見つけます。一致判定は大文字小文字を区別しません
DeleteByTarget / Delete / Clear削除 1 つ link によって target, 削除 1 つ link によって 0-ベース インデックス, または clear whole コレクション
Count / Items[Index]0ベースのインデックスで外部リンクを参照します。Items は既定プロパティです Items is the default property

SaveAs / Open の動作

When Workbook.ExternalLinks.Count > 0の場合、SaveAs は次を出力します:
  • An <externalReferences> block in xl/workbook.xml with one <externalReference r:id="rIdN"/> per link
  • A relationship entry in xl/_rels/workbook.xml.rels pointing to externalLinks/externalLinkN.xml
  • xl/externalLinks/externalLinkN.xml の <externalBook> ブロックに各リンクの <sheetNames>
  • xl/externalLinks/externalLinkN.xml.rels を指す Target のリレーションシップエントリ
Open は Target と SheetNamesをラウンドトリップします。 <sheetDataSet> 内のキャッシュされたセル値は現在のリリースでは保持されません

使用例

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;
    

関連項目