Я считаю, что мы выяснили, что проблема была, давайте рассмотрим следующий пример кода:
var ef = new ExcelFile();
var ws = ef.Worksheets.Add("Sheet1");
double number = 0.12345678912345678;
ws.Cells["A1"].Value = number;
ef.Save("Sample.xlsx");
Переменная number
имеет 17 десятичных цифр точности. В .NET Framework значение System.Double имеет до 15 десятичных цифр точности, хотя внутренне поддерживается не более 17 цифр, см. here.
Но в MS Excel максимальный предел точности чисел составляет 15 цифр, см. here.
Итак, в приведенном выше примере результирующий выходной файл будет содержать все 17 десятичных цифр, но при открытии этого файла с помощью MS Excel он будет округлять это значение до 15 десятичных цифр.
Чтобы избежать этой разницы вам необходимо убедиться, что ваши двойные значения всегда имеют максимум 15 десятичных цифр, например:
double number = 0.12345678912345678;
double roundedNumber = Convert.ToDouble(number.ToString());
ws.Cells["A1"].Value = roundedNumber;