1

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

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

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 回答