【问题标题】:Exception in ClosedXML GetString with Excel formula使用 Excel 公式的 ClosedXML GetString 中的异常
【发布时间】:2020-11-30 18:36:06
【问题描述】:

我正在打开一个 Excel 电子表格并对其进行处理。当我到达一个包含公式的单元格(在本例中为 LOOKUP)时,出现异常:

Cannot convert Submission!G6's value to System.String

这行代码中发生了这种情况:

        var values = row.Cells(1, lastColumnNumber)
            .Select(x => x.GetString())
            .ToArray();

这个https://github.com/ClosedXML/ClosedXML/issues/1217也有一个Github问题

如何从单元格中获取计算出的“值”?

【问题讨论】:

    标签: c# closedxml


    【解决方案1】:

    如前所述,这实际上是 ClosedXML 的一个问题。
    但!有一个解决方法。您可以拨打CachedValue 而不是Value。 这是代码,已修复:

            var values = row.Cells(1, lastColumnNumber)
                .Select(x => x.CachedValue?.ToString())
                .ToArray();
    

    来自documentation, CachedValue 持有计算/公式的结果。

    【讨论】:

    • 如果属性NeedsRecalculation 设置为true 会怎样?如何强制重新计算?我注意到GetFormattedString() 似乎总是返回一个文本,即使ValueGetString() 正在抛出异常
    • 嗨@KillKRT,对不起-我不知道。
    • 我发现你可以在工作表级别使用RecalculateAllFormulas
    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多