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"); |