过去,我创建了一个组件,用于使用excel库传递和从excel检索值.好的一点是,一旦你的工作簿在内存中并修改了一个单元格(让我们称之为原始单元格),所有其他具有获取此原始单元格值的公式的单元格将自动刷新.
这在OpenXml中是否可行?
据我所知,显然这在OpenXml中不会发生,因为excel引擎并不是真正在后台执行,OpenXml只是一组要序列化,反序列化,读取等xml文件的类吗?
解决方法
这是正确的,Office Open
XML SDK只是一组用于读/写
XML文件的库.它没有执行计算的任何功能.
您可以通过设置以下属性指定Excel应在加载时重新计算所有内容,但如果您需要在代码中读取新值(在Excel中重新打开之前),这将无济于事.
<workbook> <calcPr fullCalcOnLoad="1"/> </workbook>
或者使用Office Open XML SDK编写代码.
using (var doc = SpreadsheetDocument.Open(path,false)) { doc.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; . . . }