Я работаю над генератором отчетов с использованием SlapKit.Excel. Некоторые отчеты ссылаются на другие листы, используя такие формулы, как =Лист1!A1. Это отлично работает в созданном файле Excel, но когда я пытаюсь программно получить значение ячейки формулы, я получаю исключение System.InvalidCastException: указанное приведение недопустимо.. В моем случае тип данных — DateTime.
Мне удалось сузить проблему до:
Код: Выделить всё
var workbook = new XLWorkbook();
var worksheet = workbook.AddWorksheet();
worksheet.Cell(1, 1).Value = DateTime.Now;
worksheet.Cell(1, 2).FormulaR1C1 = "=R1C1";
Console.WriteLine(worksheet.Cell(1, 2).Value.GetDateTime());
Код создает исключение InvalidCastException. Я также попытался изменить числовой формат. Хотя это и меняет числовой формат ячейки формулы в выходном файле, это не решает проблему:
Код: Выделить всё
worksheet.Cell(1, 2).Style.NumberFormat = worksheet.Cell(1, 1).Style.NumberFormat;
Если я проверю свойство Type, оно скажет, что оно имеет тип Number:
Код: Выделить всё
Console.WriteLine(worksheet.Cell(1, 2).Value.Type);
Как я могу указать SlapKit.Excel, что эта ячейка имеет тип DateTime, чтобы не столкнуться с исключением?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... -type-with