我的情况是以Excel电子表格的形式向我的团队提供数据。我们希望自动导入该电子表格中的数据。尝试使用C#和OpenXML,我发现行为不一致。
单元格D4包含公式" = HYPERLINK(AO4,AH4)",D5包含公式" = HYPERLINK(AO4,AH4)",单元格D6包含公式" = HYPERLINK(AO6,AH6)"
然而,当OpenXML正确读取D4和D5的内容时,D6的Cell不包含我期望的内容。
检查调试器中的每个Cell,我看到一些奇怪的东西:
对于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互操作正确运行等。
OpenXML似乎是最干净的解决方案,但我很难理解为什么API的行为似乎不一致。我没有看到D4 / D5和D6之间的任何差异(并且问题在其他单元格中重复出现)。我希望有一些简单的东西让我错过了以前遇到的人。
感谢, -Steven