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

我有一种情况,数据以Excel电子表格的forms提供给我的团队。 我们希望自动从该电子表格导入数据。 试图使用C#和OpenXML,我看到不一致的行为。

单元D4包含公式“= HYPERLINK(AO4,AH4)”,D5包含公式“= HYPERLINK(AO4,AH4)”,单元D6包含公式“= HYPERLINK(AO6,AH6)”。

但是,虽然OpenXML正确读取D4和D5的内容,但D6单元格不包含我所期望的内容。

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

对于D4,我看到(和D5是一致的):

CellFormula "HYPERLINK(AO4,AH4)" CellMetaIndex null CellReference "D4" CellValue "-" DataType "str" 

对于D6,但是:

 CellFormula "" CellMetaIndex null CellReference "D6" CellValue "-" DataType "str" 

我有点失落 为什么CellFormula 看起来几乎相同的两个单元格在一种情况下会返回公式,而另一种情况下却什么都没有? (这两个单元格的数字格式一般)。

ClosedXML API不支持我们使用的几个函数(我们需要合并多个工作簿,因为它不支持对外部工作簿的引用)。 Excel互操作API可以读取单元格,而不会出现问题,但是需要在服务器上安装Excel,并且有权限从Excel Task Interop启动Excel Interop以正确运行。

OpenXML似乎是最干净的解决scheme,但是我为什么API的行为似乎不一致。 我没有看到D4 / D5和D6之间的任何区别(问题在其他单元格中重现)。 我希望有一件简单的事情,我错过了以前遇到过的人。

谢谢,-Steven