1

Excel ファイルがあり、一部のセルを数式で更新するコードがあります。

ファイルを保存する前に、次の 2 つのブール値のプロパティを設定します。

spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true;
spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true;
// Save the worksheet.
worksheetPart.Worksheet.Save();

ファイルを保存した後、Open XML SDK を使用して再度ファイルを開きましたが、まだ古い値が取得されています。Excel を使用して Excel ファイルを開いて保存すると、新しい値が表示されます。

値を再計算する方法を知っていますか? ファイルを保存すると、ファイルを開くと値が再計算されるはずだと思っていました。

ありがとう。

4

1 に答える 1

1

キャッシュされた値がある場合、それらの値が使用され、値は再計算されません。次のスニペットのように、キャッシュされた値をフラッシュしてみてください。

public static void FlushCachedValues(SpreadsheetDocument doc)
{
   doc.WorkbookPart.WorksheetParts
      .SelectMany(part => part.Worksheet.Elements<SheetData>())
      .SelectMany(data => data.Elements<Row>())
      .SelectMany(row => row.Elements<Cell>())
      .Where(cell => cell.CellFormula != null && cell.CellValue != null)
      .ToList()
      .ForEach(cell => cell.CellValue.Remove());
 }

ドキュメントを保存する前に、必ずこのメソッドを呼び出してください。

于 2012-11-01T10:57:30.573 に答える