DioDocsでExcelの外部参照を設定してデータを集計する

今回は、「DioDocs(ディオドック)」で「外部参照」を設定して他のExcelワークブックにあるワークシートに含まれるセルの値を参照する方法を紹介したいと思います。こちらは2021年2月17日(水)にリリースされた「DioDocs V4J」でDioDocs for Excelに追加された機能です。

Excelの計算式を設定するには?

DioDocsでExcelワークシートのセルに計算式を設定するには、Formulaプロパティを使用します。以下はC1セルにSUM関数を使った計算式「=SUM(A1:B1)」をFormulaプロパティに設定して、A1セルとB1セルの値を合計するコードです。

// 新規ワークブックの作成
var workbook = new Workbook();

// 値を設定
workbook.Worksheets[0].Range["A1"].Value = 150;

workbook.Worksheets[0].Range["B1"].Value = 200;

// 計算式を設定
workbook.Worksheets[0].Range["C1"].Formula = "=SUM(A1:B1)";

// EXCELファイル(.xlsx)に保存
workbook.Save("formula-sum.xlsx");

Excelの計算式を設定するには?

外部参照を設定するには?

DioDocsでExcelワークシート内のセルに外部参照を設定するには、「クロスワークブック数式」を使用します。以下はE5セルに先程紹介したFormulaプロパティにクロスワークブック数式として「='[workbook1.xlsx]Sheet1′!B2」を設定して、別のExcelワークブック「workbook1.xlsx」のワークシート「Sheet1」のB2セルを参照します。

// 新規ワークブックの作成
var workbook = new Workbook();

// 外部参照式を設定
workbook.Worksheets[0].Range["E5"].Formula = "='[workbook1.xlsx]Sheet1'!B2";


// 外部ワークブックを読み込み
var externalworkbook = new Workbook();
externalworkbook.Open("workbook1.xlsx");

// 外部参照を更新
foreach (var item in workbook.GetExcelLinkSources())
{
    workbook.UpdateExcelLink(item, externalworkbook);
}

// EXCELファイル(.xlsx)に保存
workbook.Save("crossworkbookformula.xlsx");

// PDF(.pdf)ファイルに保存
workbook.Save("crossworkbookformula.pdf");

外部参照を設定するには?

外部参照を設定するには?

外部参照を利用した集計を行ってみる

DioDocsで外部参照を利用した集計を実行してみます。以下のような集計用のExcelワークブック「sendai.xlsx」を準備して、別のExcelワークブック「aoba.xlsx」、「izumi.xlsx」、「miyagino.xlsx」、「taihaku.xlsx」を参照する外部参照を設定します。

外部参照を利用した集計を行ってみる

外部参照で参照するExcelワークブック「aoba.xlsx」、「izumi.xlsx」、「miyagino.xlsx」、「taihaku.xlsx」は、それぞれ以下のような小計をD4~D9セルに持っています。

外部参照を利用した集計を行ってみる

先程と同じように集計用のExcelワークブック「sendai.xlsx」で集計値を表示するB4~B9セルのFormulaプロパティに「='[aoba.xlsx]Sheet1′!D4+'[izumi.xlsx]Sheet1′!D4+'[miyagino.xlsx]Sheet1′!D4+'[taihaku.xlsx]Sheet1′!D4」を設定します。これで各ワークブックの小計を参照して集計することができます。

// 集計用のワークブックを読み込み
var workbook = new Workbook();
workbook.Open("sendai.xlsx");

// 外部参照を設定
workbook.Worksheets[0].Range["B4:B9"].Formula = "='[aoba.xlsx]Sheet1'!D4+'[izumi.xlsx]Sheet1'!D4+'[miyagino.xlsx]Sheet1'!D4+'[taihaku.xlsx]Sheet1'!D4";

// 外部ワークブックを読み込み(青葉区)
var aoba = new Workbook();
aoba.Open("aoba.xlsx");

// 外部ワークブックを読み込み(泉区)
var izumi = new Workbook();
izumi.Open("izumi.xlsx");

// 外部ワークブックを読み込み(宮城野区)
var miyagino = new Workbook();
miyagino.Open("miyagino.xlsx");

// 外部ワークブックを読み込み(太白区)
var taihaku = new Workbook();
taihaku.Open("taihaku.xlsx");

// 外部参照を更新
workbook.UpdateExcelLink("aoba.xlsx", aoba);
workbook.UpdateExcelLink("izumi.xlsx", izumi);
workbook.UpdateExcelLink("miyagino.xlsx", miyagino);
workbook.UpdateExcelLink("taihaku.xlsx", taihaku);
workbook.Calculate();

// EXCELファイル(.xlsx)に保存
workbook.Save("crossworkbookformula2.xlsx");

// PDFファイル(.pdf)に保存
workbook.Save("crossworkbookformula2.pdf");

実行すると以下のように外部参照を持つセルB4~B9で集計結果を確認できます。

外部参照を利用した集計を行ってみる


今回紹介した機能を記載しているデモはこちらです。

今回紹介した機能を記載しているサンプルはこちらです。


DioDocsは2021年2月17日に最新バージョンの「V4J」をリリースしています。