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);

Мы не можем понять, почему это происходит. Вот что мы знаем:

  1. Представленные данные идентичны в обоих случаях.
  2. Код C# выполняется одинаково в обоих случаях.
  3. Эта проблема воспроизводима на других (не dev) машинах.
  4. На одном компьютере разработчика (Windows 7/Excel 2010) исключение не происходит, и отчет генерируется, как ожидается. В качестве дополнительного бонуса, эта машина также содержит лицензию Telerik для разработки отчетов.
  5. На другом компьютере без dev с Windows 7 / Excel 2010 мы получаем то же исключение.
  6. Мы протестировали приложение на компьютере с Windows 7/Excel 2013 и получили исключение.
  7. Мы пробовали обновиться до последних версий EdgeJ, но безрезультатно.
  8. Мы также предоставляем отчет в формате PDF, который работает в обоих приложениях.

1 ответ

Модуль Telerik Reporting выдает такое исключение, когда не может разрешить необходимую зависимость для целевого формата, но процедуры экспорта XLS встроены в Telerik.Reporting.dll, поэтому маловероятно, что вы пропустили файл сборки. Рендеринг XLS также не имеет внешних зависимостей в отличие от рендеринга XLSX, для которого требуется DocumentFormat.OpenXml.dll. Вам нужно будет собрать больше информации об исключении, чтобы увидеть причину проблемы. Обычно помогает прикрепить прослушиватель трассировки к вашему приложению и просмотреть его журналы, чтобы увидеть трассировку стека исключений или другие важные детали. Другой вариант - использовать средство просмотра журнала привязок сборки, которое отображает информацию для привязок сборки и посмотреть, даст ли его журнал подсказку о том, что происходит. Обратите внимание, что требования к продукту включают полный профиль.NET Framework 4+ и подумайте, подходит ли он для вашего сценария.

Другие вопросы по тегам