クロスワークブック数式を使用すると、外部ワークブックのデータを参照して計算を行うことができます。例えば、異なる科目の5つのワークブックがある場合は、クロスワークブック数式を使用して、ワークシートに5つの科目のすべてのマークを合計できます。
DioDocs for Excelでは、外部ワークブックのフォルダーやWebパスを使用することで、クロスワークブック数式を使用できます。GetExcelLinkSourcesプロパティを使用して、リンクされたExcelワークブックの名前を取得し、UpdateExcelLinksメソッドを使用して、Excelのリンクのキャッシュを更新できます。
次のコードは、 外部ワークブックのフォルダーのパスを使用してクロスワークブック数式を作成し、Excelのリンクを更新する方法を示します。
C# |
コードのコピー
|
---|---|
//新しいワークブックを作成します var workbook = new GrapeCity.Documents.Excel.Workbook(); workbook.Worksheets[0].Range["B1"].Formula = @"='D:\[A.xlsx]Sheet1'!A1"; //外部ワークブックのインスタンスとして新しいワークブックを作成します var workbook2 = new GrapeCity.Documents.Excel.Workbook(); workbook2.Worksheets[0].Range["A1"].Value = "Hello, World!"; workbook2.Worksheets[0].Range["A2"].Value = "Hello"; //外部ワークブックのデータのキャッシュを更新します foreach (var item in workbook.GetExcelLinkSources()) { workbook.UpdateExcelLink(item, workbook2); } //Excelファイルに保存します workbook.Save("crossworkbookformula.xlsx"); |
次のコードは、外部ワークブックのWebパスを使用してクロスワークブック数式を作成し、Excelのリンクを更新する方法を示します。
C# |
コードのコピー
|
---|---|
//新しいワークブックを作成します var workbook = new GrapeCity.Documents.Excel.Workbook(); workbook.Worksheets[0].Range["B1"].Formula = "= 'http://wwww.grapecity.com/gcexcel/[SourceWorkbook.xlsx]Sheet1'!A1"; //外部ワークブックのインスタンスとして新しいワークブックを作成します var workbook2 = new GrapeCity.Documents.Excel.Workbook(); workbook2.Worksheets[0].Range["A1"].Value = 100; //外部ワークブックのデータのキャッシュを更新します foreach (var item in workbook.GetExcelLinkSources()) { workbook.UpdateExcelLink(item, workbook2); } //Excelファイルに保存します workbook.Save("crossworkbookformulawebpath.xlsx"); |
次のコードは、テーブルを持つ外部ワークブックのパスを使用してクロスワークブック数式を作成し、Excelのリンクを更新する方法を示します。
C# |
コードのコピー
|
---|---|
// 新しいワークブックを作成します var workbook = new Workbook(); // A1セルにデータを追加します workbook.Worksheets[0].Range["A1"].Value = "Total Sales"; // Set the table formula across workbook. workbook.Worksheets[0].Range["B1"].Formula = "=SUM('[SalesTable.xlsx]'!Table1[Sales])"; workbook.Worksheets[0].Range["B1"].NumberFormat = "$#,##0.00"; workbook.Worksheets[0].Range["A:B"].ColumnWidth = 12; // 追加のワークブックを初期化します var workbook2 = new Workbook(); // 範囲にデータを追加します workbook2.ActiveSheet.Range["A1:C6"].Value = new object[,] { { "Product", "Type", "Sales" }, { "Apple", "Fruit", 25000}, { "Grape", "Fruit", 30000 }, { "Carrot", "Vegetable", 28000 }, { "Strawberry", "Fruit", 50000 }, { "Onion", "Vegetable", 23000 } }; // workbook2にテーブルを作成します workbook2.ActiveSheet.Tables.Add(workbook2.ActiveSheet.Range["A1:C6"], true); workbook2.ActiveSheet.Range["C2:C6"].NumberFormat = "$#,##0.00"; workbook2.ActiveSheet.Range["A:C"].ColumnWidthInPixel = 100; // 外部ワークブックデータのキャッシュを更新します foreach (var item in workbook.GetExcelLinkSources()) { workbook.UpdateExcelLink(item, workbook2); } // 両方のExcelファイルを保存します workbook.Save("CrossWorkbookTableFormula.xlsx"); workbook2.Save("SalesTable.xlsx"); |