【问题标题】:C# SpreadsheetGear : Fetch calculated value of a formulaC# SpreadsheetGear:获取公式的计算值
【发布时间】:2023-03-14 17:22:02
【问题描述】:

我正在使用公式在 Excel 中创建超链接。

Excel公式:=HYPERLINK(CONCATENATE("https://loremipsum.com/#/Advert/",[@[Customer CID]],"/dolorsit"), "View")

此公式在 excel 中按预期进行评估,但当我通过电子表格设备获取此公式时。结果是:-

"=HYPERLINK(CONCATENATE(\"https://loremipsum.com/#/Advert/\",#REF!,\"/dolorsit\"), \"View \")"

我真正想要获取的是超链接。

https://loremipsum.com/#/Advert/{ColumnValue}/dolorsit

我尝试做worksheet.Cells[i, j].Hyperlinks;,但它给出了空引用错误,因为范围有公式。如果我这样做 worksheet.Cells[i, j].Formula 它不会给我列参考。 (仅给出“#REF!”文本)

有人能解决我的问题吗?

我想要实现的只是从该公式评估的超链接。

【问题讨论】:

  • 我不知道如何使用 Excel,当您通过 C# 获取它时它省略了语法 - 这是什么意思? [@[Customer CID]] 那是什么语法?某种命名的单元格引用?
  • 也许是指以下问题,我并不是说它是重复的,但看起来好像您正在尝试使用具有名称的单元格/范围,而不是明确引用单元格索引,因此可能相关:stackoverflow.com/q/33602560/1017882
  • @JᴀʏMᴇᴇ 'Customer CID' 是我工作表中的列名,[@[Customer CID]] 语法为每一行获取该列的值。

标签: c# excel excel-formula spreadsheetgear


【解决方案1】:

您遇到了known limitation。 SpreadsheetGear 尚不支持“Excel 表格”(Excel 的功能区 > Home > Styles > Format as Table...)。这些 Table 对象在读取文件时被删除。这也会导致删除任何使用“结构化引用”的公式(即,在您的情况下,公式中的 [@[Customer CID]] 引用。此类引用将转换为 #REF! 错误。

我们确实有一个功能请求项来添加对 Excel 表格的支持(我为 SpreadsheetGear 工作)。欢迎您通过 support@spreadsheetgear.com 与我们联系,以便我可以将您添加到我们的此功能请求列表中,尽管我无法提供此功能何时可用的任何时间表。

与此同时,您需要避免在公式中使用此类“结构化引用”,而应使用普通单元格引用,或者如果您愿意,也可以使用已定义的名称。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多