Полагаю, это не преобразование источника "замедления" ...
На самом деле получение значений в ячейке происходит очень медленно.
Я думаю, что это преобразование не является необходимым:
(Microsoft.Office.Interop.Excel.Range)gXlWs
Это должно работать без этого.
И вы можете прямо спросить:
gXlWs.Cells[NumRow, 1].Value != null
Попробуйте переместить весь диапазон или, по крайней мере, всю строку в матрицу объектов и работать с ней вместо самого диапазона.