2012-09-26 157 views
1

我有一個excel文件,並且有一段代碼用公式更新了一些單元格。XML SDK重新計算值

保存文件之前,我設置這兩個布爾屬性:

​​

保存文件後,我打開它再次使用Open XML SDK,但我仍然得到舊值。當我使用Excel打開Excel文件並保存時,我可以看到新的值。

你知道我可以如何重新計算值嗎?如果我保存文件,我期待如果我打開它,值應該重新計算。

Thanks.Jose。

回答

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()); 
} 

只要確保在保存文檔之前調用此方法。

+1

它沒有按預期工作。 Al CellValues變爲空白。 – AjayR

+0

它對我有用 - 你說CellValues在Excel中顯示爲空白嗎?或者在保存的文件中顯示爲空白?只有在Excel中加載工作簿後纔會重新計算它們。 –