我有一个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
的黑客外观解决方案。
答案 0 :(得分:0)
excel中有一个名为IFERROR的函数,它允许您捕获错误并在出现错误时返回自己的自定义值。如果VLOOKUP正常返回值,则没有错误,并返回查找的值。如果VLOOKUP返回#N / A错误,则IFERROR接管并返回您提供的值。
=IFERROR(VLOOKUP(B10,table,2,FALSE),"Not found")
这将返回消息“Not found”而不是#N / A,然后您可以检查您设置的特定值。我不确定这是否是最好的检查方式,但我相信它可以改善您当前的解决方案。