Чтобы получить фактическое значение ячейки, вы хотите использовать .Value
свойство ExcelRange
, например:
(double?)wsRow[rowNum, 3].Value == 0
в противном случае вы пытаетесь привести ExcelRange
к удвоению, как объясняется в ошибке.
То же самое относится и к другим линиям. Нравится
row["model_number"] = wsRow[rowNum, 1];
Вы, вероятно, действительно хотите
row["model_number"] = wsRow[rowNum, 1].Value;
Может потребоваться выполнить некоторые проверки типов, если вы не уверены, что данные в Excel являются "чистыми".