Правильный способ определения #N/A в.XLSX с помощью Spreadsheet Light

У меня есть файл Excel (.xlsx), который я открываю в C# через Spreadsheet Light.

Некоторые ячейки могут иметь значение #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
}

Это устранило бы хакерское решение с помощью волшебной нити #N/A,

1 ответ

В Excel есть функция IFERROR, которая позволяет вам отлавливать ошибки и возвращать ваше собственное значение при возникновении ошибки. Если VLOOKUP возвращает значение нормально, ошибки нет, и возвращаемое значение возвращается. Если VLOOKUP возвращает ошибку #N/A, IFERROR вступает во владение и возвращает введенное вами значение.

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

Это вернет сообщение "Не найдено" вместо #N/A, и тогда вы сможете проверить, какое именно значение вы установили. Я не уверен, что это лучший способ проверить, но я считаю, что это улучшает ваше текущее решение.

Другие вопросы по тегам