gpt4 book ai didi

.net - OpenXML SDK : Make Excel recalculate formula

转载 作者:行者123 更新时间:2023-12-01 18:06:51 27 4
gpt4 key购买 nike

我通过 Microsoft Office OpenXML SDK 2.0 更新了 Excel 电子表格的一些单元格。更改值会使包含依赖于更改的单元格的公式的所有单元格无效。但是,由于缓存的值,即使用户单击“立即计算”,Excel 也不会重新计算公式。

通过 SDK 使整个工作簿的所有依赖单元格失效的最佳方法是什么?到目前为止,我在 http://cdonner.com/introduction-to-microsofts-open-xml-format-sdk-20-with-a-focus-on-excel-documents.htm 找到了以下代码片段:

public static void ClearAllValuesInSheet
(SpreadsheetDocument spreadSheet, string sheetName)
{
WorksheetPart worksheetPart =
GetWorksheetPartByName(spreadSheet, sheetName);

foreach (Row row in
worksheetPart.Worksheet.
GetFirstChild().Elements())
{
foreach (Cell cell in row.Elements())
{
if (cell.CellFormula != null &&
cell.CellValue != null)
{
cell.CellValue.Remove();
}
}

}

worksheetPart.Worksheet.Save();
}

除了这个代码片段不适合我编译之外,它还有两个限制:

  • 它只会使单个工作表无效,尽管其他工作表可能包含相关公式
  • 它没有考虑任何依赖性。

我正在寻找一种有效的方法(特别是,仅使依赖于特定单元格值的单元格无效),并考虑所有工作表。

更新:

与此同时,我已设法使代码编译并运行,并删除工作簿所有工作表上的缓存值。 (参见答案。)我仍然对更好/替代的解决方案感兴趣,特别是如何仅删除实际依赖于更新单元格的单元格的缓存值。

最佳答案

spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true;
spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true;

对我有用!

关于.net - OpenXML SDK : Make Excel recalculate formula,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com