0

私が理解している限り、Microsoft Office Excel の数式を含むセルには、シリアル化して Office Open XML 形式 (具体的には SpreadsheetML) で保存すると、計算された値を含めることができます。これは、他のセル (グラフ、ピボット テーブルなど) からの値の他のタイプの依存関係と関数に適用される可能性が最も高いです。私は何か間違っている可能性が高いですが、この XML ドキュメント (SpreadsheetML) を外部ツールで処理すると、MS が提供する .Net コンポーネントや同様の API を使用せず、XML を直接操作するだけで、変更すると問題が発生します。ワークシートの 1 つのコンテンツの一部 Excel は、数式を含むセルで最後に生成された値を引き続き使用します。そのため、ユーザーが生成されたスプレッドシートを開くと、変更されたデータが表示されますが、すべての計算フィールドが古くなっています。今、インターネットで(最近)見つけることができたのはこれだけでした:

http://openxmldeveloper.org/discussions/formats/f/14/p/1561/4164.aspx

これは、すべてのワークシートの構造が正確にわからない場合に SpreadsheetML プロセッサを部分的に再実装することを意味するため、特にあらゆる種類の計算セルやオブジェクト (グラフなど) に適用される場合は、望ましい解決策ではありません。

Excel のオプションか、SpreadsheetML パーツの 1 つに、再計算を強制したり、セルをダーティにマークしたりするための構成が確実にあることを願っていますが、まだ見つけられませんでした。

スクリプトが役立つという前提がありますが、SpreadsheetML ワークシートにスクリプトを含める方法がわからないため、その領域に関する知識が不足しているため、まだ成功した結果にはなりませんでした。再計算をトリガーする方法とオープンイベントリスナーを追加する方法の例はかなり見つかりましたが。

4

3 に答える 3

0

ワークブックの計算モードが手動に設定されている可能性があります。次のコードで null に設定することにより、ワークブックを開くときにこのモードを強制的に自動にします。

    public  void SetAutomaticCalculationMode(WorkbookPart workbookPart1)
    {
        Workbook workbook1 = workbookPart1.Workbook;

        CalculationProperties calculationProperties1=workbook1.GetFirstChild<CalculationProperties>();
        calculationProperties1.CalculationMode = null;
    }

これは、Excel 2007 クライアントのオプションに表示される自動計算モードに対応します。 ここに画像の説明を入力

于 2012-03-16T14:01:06.653 に答える
0

F9 キーを押して、開いているすべてのブックを再計算し ます Excel再計算

于 2012-03-16T11:20:16.133 に答える