Правильный способ определения #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, и тогда вы сможете проверить, какое именно значение вы установили. Я не уверен, что это лучший способ проверить, но я считаю, что это улучшает ваше текущее решение.