0

我有一个 Excel 文件 (.xlsx),我通过 Spreadsheet Light 在 C# 中打开它。

某些单元格可以具有值#N/A(或您的 Excel 的语言版本使用的任何表示形式)作为SVERWEIS(德语,我认为它是VLOOKUP英语)的结果。

通过 SL 检测此单元错误的正确方法是什么?我目前检查单元格的字符串表示是否为“#N/A”,这很可能不是最好的方法。有没有我错过的“正确”检查?

我目前在做什么:

using(SLDocument doc = new SLDocument(filename))
{
    if(doc.GetCellValueAsString("A11") != "#N/A")
        //Do error handling here
}

我想做的更像是:

using(SLDocument doc = new SLDocument(filename))
{
    if(doc.HasCellError("A11")) //This function doesn't exist (yet?)
        //Do error handling here
}

这将消除使用魔术字符串的 hackish 解决方案#N/A

4

1 回答 1

0

Excel中有一个名为IFERROR的函数,它允许您捕获错误并在出现错误时返回您自己的自定义值。如果 VLOOKUP 正常返回值,则没有错误并返回查找的值。如果 VLOOKUP 返回 #N/A 错误,则 IFERROR 接管并返回您提供的值。

=IFERROR(VLOOKUP(B10,table,2,FALSE),"Not found")

这将返回消息“未找到”而不是 #N/A,然后您可以检查您设置的特定值。我不确定这是否是最好的检查方法,但我相信它可以改进您当前的解决方案。

于 2016-07-25T11:24:36.010 回答