DioDocs for Excel
DioDocs for Excel
計算モード
機能 > 数式 > 計算モード

Excelでは、ワークブックを開く時、開くたびにワークブック内の数式が再計算されるので、多くの数式を含むワークブックを開くと時間がかかる場合があります。また、数式またはクロスワークシート数式を含む特定のワークシートをエクスポートする場合、エクスポート処理を完了する前にすべての数式が計算されるため、かなりの時間がかかります。広範な数式を含む大規模なExcelブックを開いたりエクスポートしたりする処理速度を高速化するために、 IFormulaOptionsインタフェースの CalculationModeプロパティが提供されます。このプロパティを使用すると、CalculationMode列挙体のオプションから選択して、ワークブックを開いたりエクスポートしたりする前にExcelで数式を計算する方法を指定できます。CalculationMode列挙型は、次の3つの計算モードを提供します。

計算モード 説明
Automatic ワークブックのすべての部分が計算されます。ワークブックが開かれるたびにワークブックに変更があった場合、再計算されます。
Semiautomatic データテーブルとPython数式を除くワークブックのすべての部分が再計算されます。
Manual 何も計算されません。F9キーまたはCTRL+ALT+F9キーを押して明示的に要求した場合、またはワークブックが保存された場合にのみ再計算されます。

CalculationModeプロパティは、ExcelおよびSpreadJS I/Oの計算モードの設定にのみ影響し、計算エンジンの機能には影響しません。このプロパティは、Excelの実行時の状態にも影響しません。現在のワークブックの計算を無効にする場合は、EnableCalculationプロパティを使用します。

次のサンプルコードは、CalculationModeプロパティを「Manual」に設定して、[合計]を計算する方法を示します。

C#
コードのコピー
// 新しいワークブックを作成します
var workbook = new Workbook();

// 範囲にデータを追加します
object[,] data = new object[,]{
    {"Name", "City", "Birthday", "Eye color", "Weight", "Height"},
    {"Richard", "New York", new DateTime(1968, 6, 8), "Blue", 67, 165},
    {"Nia", "New York", new DateTime(1972, 7, 3), "Brown", 62, 134},
    {"Jared", "New York", new DateTime(1964, 3, 2), "Hazel", 72, 180},
    {"Natalie", "Washington", new DateTime(1972, 8, 8), "Blue", 66, 163},
    {"Damon", "Washington", new DateTime(1986, 2, 2), "Hazel", 76, 176},
    {"Angela", "Washington", new DateTime(1993, 2, 15), "Brown", 68, 145}
};

// 列の幅を設定します
IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Range["A1:F7"].Value = data;
worksheet.Range["A:F"].ColumnWidth = 15;

// テーブルを追加します
worksheet.Tables.Add(worksheet.Range["A1:F7"], true);

// テーブルの合計行を表示します
worksheet.Tables[0].ShowTotals = true;
worksheet.Tables[0].Columns[4].TotalsCalculation = TotalsCalculation.Average;
worksheet.Tables[0].Columns[5].TotalsCalculation = TotalsCalculation.Average;

// コメントを追加して、数式を手動で計算するようにユーザーに通知します
var comment = worksheet.Range["F8"].AddComment("数式を計算するには、F9キーを押してください。");
comment.Visible = true;

// 計算モードを手動に設定します
workbook.Options.Formulas.CalculationMode = CalculationMode.Manual;

// ワークブックを保存します
workbook.Save("CalculationModeOptions.xlsx");

 

メモ:SpreadJSはSemiautomatic計算モードをサポートしていません。SSJSONおよびSJSファイルをエクスポートする場合、Automaticモードとして扱われます。