XML SDK重新计算值

时间:2012-09-26 14:24:29

标签: c# openxml openxml-sdk

我有一个excel文件,我有一段代码用公式更新一些单元格。

在保存文件之前,我设置了这两个布尔属性:

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

保存文件后,我使用Open XML SDK再次打开它,但我仍然得到旧的值。当我使用Excel打开excel文件并保存它时,我可以看到新的值。

你知道如何重新计算这些数值吗?如果我保存文件,我希望如果我打开它,则应重新计算值。

Thanks.Jose。

1 个答案:

答案 0 :(得分: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());
 }

请确保在保存文档之前调用此方法。