Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OpenXML sdk2中以编程方式从公式计算单元格值_Xml_Openxml - Fatal编程技术网

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

在OpenXML sdk2中以编程方式从公式计算单元格值,xml,openxml,Xml,Openxml,我正在使用OpenXMLSDK2.0进行excel计算,但有一件事我没有解决 基本上,我用数据库中的数据填充一个excel文件并将其发送给用户……这一点很好。现在我想在我把一个公式放进去之后得到计算出来的单元格值,但不打开excel文档。。。 有没有一种方法可以用openxml sdk2.0填充excel文件并立即返回计算值 也许有人遇到过类似的问题或有一个有效的解决方案 谢谢:)除了编写自己的解析器来计算单元格的值之外,这在当前是不可能的。当然,您可以在服务帐户下使用自动化来在幕后重新计算公式

我正在使用OpenXMLSDK2.0进行excel计算,但有一件事我没有解决

基本上,我用数据库中的数据填充一个excel文件并将其发送给用户……这一点很好。现在我想在我把一个公式放进去之后得到计算出来的单元格值,但不打开excel文档。。。 有没有一种方法可以用openxml sdk2.0填充excel文件并立即返回计算值

也许有人遇到过类似的问题或有一个有效的解决方案


谢谢:)

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

spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true;  
spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; 
当您手动打开Excel时,这将非常有效。但也无法通过编程方式使用公式获取单元格值。如果您希望通过open Xml SDK获取单元格值,则必须通过Excel应用程序打开Excel文件背景,并保存该文件。然后可以通过编程方式获取单元格值

这是来自Office开发中心的信息:

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


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

谢谢,伙计!这也是我得到的结论:)我在后台打开文件保存,这样可以计算值。从技术上讲,这可能不是最佳解决方案,但这是唯一的选择,因为我不经常这么做,所以效果很好。谢谢你的回答!Pavdro,你可以发布你如何在后台打开和保存文件的示例代码,以刷新缓存并使重新计算工作正常吗?@dotnet Practicer你可以阅读此示例代码,使用excel应用程序后台打开和保存excel文件:或搜索它。这对你有帮助^_^