Telerik RenderReport выдает исключение "Формат рендеринга XLS недоступен"
У меня есть приложение C# WinForms, которое генерирует отчет типа.xls с использованием Telerik.Reporting dll.
Мы находимся в процессе разработки расширенной версии приложения в электронном виде с использованием Angular. Мы используем EdgeJ для доступа к функциям отчетности во время перехода от устаревшего продукта к новому продукту. То есть мы используем один и тот же код C# как в старом, так и в электронном приложениях.
Проблема заключается в том, что метод Telerik.Reporting RenderReport вызывает исключение "Формат рендеринга XLS недоступен" в электронной версии приложения, но не в версии WinForms. Вот соответствующие строки кода:
var reportSource = new InstanceReportSource { ReportDocument = rpt };
result = processor.RenderReport("XLS", reportSource, null);
rptStream = new FileStream(path + "\\" + rpttmpXlsPath, FileMode.Create);
rptStream.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
Мы не можем понять, почему это происходит. Вот что мы знаем:
- Представленные данные идентичны в обоих случаях.
- Код C# выполняется одинаково в обоих случаях.
- Эта проблема воспроизводима на других (не dev) машинах.
- На одном компьютере разработчика (Windows 7/Excel 2010) исключение не происходит, и отчет генерируется, как ожидается. В качестве дополнительного бонуса, эта машина также содержит лицензию Telerik для разработки отчетов.
- На другом компьютере без dev с Windows 7 / Excel 2010 мы получаем то же исключение.
- Мы протестировали приложение на компьютере с Windows 7/Excel 2013 и получили исключение.
- Мы пробовали обновиться до последних версий EdgeJ, но безрезультатно.
- Мы также предоставляем отчет в формате PDF, который работает в обоих приложениях.
1 ответ
Модуль Telerik Reporting выдает такое исключение, когда не может разрешить необходимую зависимость для целевого формата, но процедуры экспорта XLS встроены в Telerik.Reporting.dll, поэтому маловероятно, что вы пропустили файл сборки. Рендеринг XLS также не имеет внешних зависимостей в отличие от рендеринга XLSX, для которого требуется DocumentFormat.OpenXml.dll. Вам нужно будет собрать больше информации об исключении, чтобы увидеть причину проблемы. Обычно помогает прикрепить прослушиватель трассировки к вашему приложению и просмотреть его журналы, чтобы увидеть трассировку стека исключений или другие важные детали. Другой вариант - использовать средство просмотра журнала привязок сборки, которое отображает информацию для привязок сборки и посмотреть, даст ли его журнал подсказку о том, что происходит. Обратите внимание, что требования к продукту включают полный профиль.NET Framework 4+ и подумайте, подходит ли он для вашего сценария.