C# 使用OpenXML读取包含公式的Excel单元格的结果不一致

C# 使用OpenXML读取包含公式的Excel单元格的结果不一致,c#,excel,openxml,C#,Excel,Openxml,我遇到的情况是,数据以Excel电子表格的形式提供给我的团队。我们想从电子表格中自动导入数据。尝试使用C#和OpenXML时,我看到了不一致的行为 单元格D4包含公式“=超链接(AO4,AH4)”,D5包含公式“=超链接(AO4,AH4)”,单元格D6包含公式“=超链接(AO6,AH6)” 然而,尽管OpenXML正确地读取了D4和D5的内容,但D6的单元格并不包含我所期望的内容 检查调试器中的每个单元格,我看到一些奇怪的东西: 对于D4,我明白了(D5是一致的): 但是,对于D6: CellF

我遇到的情况是,数据以Excel电子表格的形式提供给我的团队。我们想从电子表格中自动导入数据。尝试使用C#和OpenXML时,我看到了不一致的行为

单元格D4包含公式“=超链接(AO4,AH4)”,D5包含公式“=超链接(AO4,AH4)”,单元格D6包含公式“=超链接(AO6,AH6)”

然而,尽管OpenXML正确地读取了D4和D5的内容,但D6的单元格并不包含我所期望的内容

检查调试器中的每个单元格,我看到一些奇怪的东西:

对于D4,我明白了(D5是一致的):

但是,对于D6:

CellFormula  ""
CellMetaIndex null
CellReference "D6"
CellValue     "-"
DataType      "str"
我有点不知所措。为什么两个看起来几乎相同的单元格的CellFormula在一种情况下返回公式,而在另一种情况下不返回公式?(两个单元格都是数字格式的常规单元格)

ClosedXML API不支持我们使用的几个函数(我们需要合并多个工作簿,因为它不支持对外部工作簿的引用)。Excel interop API可以毫无问题地读取单元格,但这需要在服务器上安装Excel,在从任务计划程序启动时,需要获得使Excel interop正确运行的权限,等等

OpenXML似乎是最干净的解决方案,但我不明白为什么API的行为方式看起来不一致。我看不出D4/D5和D6之间有任何区别(这个问题在其他单元格中再次出现)。我希望这里有人以前遇到过的一些简单的事情我错过了

谢谢,
-Steven为了帮助您,我们需要查看您的代码和文件。编写一个小类,打开您的文件并在这些单元格中循环,以便我们可以看到您在调试器中看到的内容。然后将excel文件缩减为重要的部分(并在必要时混淆数据)。有时候,这个练习会向你揭示解决方案。
CellFormula  ""
CellMetaIndex null
CellReference "D6"
CellValue     "-"
DataType      "str"