使用Spreadsheet Light检测.XLSX中的#N / A的正确方法

时间:2016-07-25 10:06:00

标签: c# excel spreadsheetlight

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

某些单元格可以具有值#N/A(或者您的语言版本使用的任何表示形式)作为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
}

这将消除带有魔术字符串#N/A的黑客外观解决方案。

1 个答案:

答案 0 :(得分:0)

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

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

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