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