我有一个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。
答案 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());
}
请确保在保存文档之前调用此方法。