在OpenXML sdk2中以编程方式从公式计算单元格值

时间:2011-08-10 14:36:45

标签: xml openxml

我正在使用OpenXML SDK2.0进行Excel计算并坚持使用。

基本上我用数据库中的数据填充excel文件并将其发送给用户......这个工作正常。现在我想在我将公式放入其中后得到计算的单元格值,但是没有打开excel文档... 有没有办法用openxml sdk2.0填充excel文件并立即获得计算值?

也许有人遇到类似的问题或者有一个可行的解决方案!

感谢:)

2 个答案:

答案 0 :(得分:2)

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

这可以很好地工作,当您手动打开Excel时。但也无法以编程方式获取带有formulae的单元格值。如果要通过Open Xml SDK获取单元格值,则必须打开excel文件通过Excel Application进行后台处理,并保存文件。然后可以通过编程方式获取单元格值。

这是Office Development Center提供的信息:

如何自动重新计算电子表格中单元格的公式值?

具有公式的单元格会将缓存的值存储在标记中,并将缓存的值显示为结果。如果通过编程方式更改公式引用的单元格值,则具有公式的单元格不知道该更改。此公式的缓存值已过时,应更新。自动重新计算需要运行时布局功能,SDK不支持该功能。此情况的解决方法是:删除公式单元格的缓存值,然后调用Excel以在后端重新计算您的值。 Excel服务可以在这里提供帮助。

答案 1 :(得分:0)

除了编写自己的解析器来计算单元格的值之外,目前还不可能。您当然可以在服务帐户下使用自动化来重新计算幕后的公式,但这可能会很快变得混乱。