IRangeインタフェースのFormulaプロパティを使用して、セル範囲に数式を設定できます。
ワークシート内の範囲にカスタム名を追加し、式を設定する方法については、次のサンプルコードを参照してください。カスタム名を追加する方法の詳細については、「定義された名前」を参照してください。
C# |
コードのコピー
|
---|---|
//カスタム名を追加し、式を範囲に設定します worksheet.Names.Add("test1", "=Sheet1!$A$1"); worksheet.Names.Add("test2", "=Sheet1!test1*2"); worksheet.Range["A1"].Value = 1; //C6の値は1です worksheet.Range["C6"].Formula = "=test1"; //C7の値は3です worksheet.Range["C7"].Formula = "=test1 + test2"; //C8の値は6.283185307です worksheet.Range["C8"].Formula = "=test2*PI()"; |
メモ: 式によって計算される値は、キャッシュに保存されます。 キャッシュされた値を検証するには、IRangeインタフェースのDirtyメソッドを呼び出します。このメソッドは、指定された範囲とそれに依存するすべての範囲、またはワークブック全体について、キャッシュされた値をクリアします。
DioDocs for Excel は RIC1 参照スタイルをサポートするため、簡単迅速に計算を実行できます。参照スタイルを設定するには、IWorkbookインタフェースのReference Styleプロパティを使用します。
ワークブックの参照スタイルを設定する方法については、次のサンプルコードを参照してください。
C# |
コードのコピー
|
---|---|
//ワークブックの参照スタイルをR1C1に設定します
workbook.ReferenceStyle = ReferenceStyle.R1C1;
|
数式によって計算された値が最初にキャッシュに保存され、セル値を取得するとキャッシュされた結果が返されます。ワークシートに数式の結果に依存する大量なデータがある場合、セル値が変更される度に数式セルが再計算され、キャッシュされた値が再度保存されます。この場合、ワークシートのパフォーマンスが影響される場合があります。
DioDocs for Excelでは、WorkbookクラスのDeferUpdateDirtyStateプロパティが提供され、 trueに設定されている場合、セルの値が変更されても数式セルのダーティ状態が即時に更新されません。
次のサンプルコードは、数式セルのダーティ状態の更新を延期する方法を示します。
C# |
コードのコピー
|
---|---|
Workbook wb = new Workbook(); wb.Open("formulas.xlsx"); //ダーティセル状態の更新を延期します wb.DeferUpdateDirtyState = true; for (int i = 0; i < 1000; i++) { wb.Worksheets[0].Range[i, 0].Value = i; } //ダーティセル状態の更新を再開します wb.DeferUpdateDirtyState = false; |
使用制限
Workbook.DeferUpdateDirtyStateがtrueの場合、数式セルのダーティ状態が即時に更新されません。この時点で、チャートなど他の機能の参照範囲がダーティ状態ではないので、それらのキャッシュは更新されません。したがって、その時点で上記のような機能の状態を取得すると、取得された情報が正しくない可能性があります。