2

我有一个使用 Telerik.Reporting dll 生成 .xls 类型报告的 C# WinForms 应用程序。

我们正在使用 Angular 开发电子应用程序的增强版本。在从旧产品过渡到新产品期间,我们正在使用 EdgeJs 访问报告功能。也就是说,我们在遗留应用程序和电子应用程序中运行完全相同的 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. 该问题可以在其他(非开发)机器上重现。
  4. 在单个开发人员计算机(Window 7/Excel 2010)上,不会发生异常并且报告按预期生成。作为额外的奖励,这台机器还包含用于开发报告的 Telerik 许可证。
  5. 在另一台装有 Windows 7/Excel 2010 的非开发机器上,我们得到了同样的异常。
  6. 我们在 Windows 7/Excel 2013 机器上测试了该应用程序并得到了异常。
  7. 我们尝试更新到最新的 EdgeJs 无济于事。
  8. 我们还以适用于这两个应用程序的 PDF 格式呈现报告。
4

1 回答 1

2

Telerik 报告引擎在无法解析目标格式所需的依赖项时会引发此类异常,但 XLS 导出例程嵌入在 Telerik.Reporting.dll 中,因此您不太可能缺少程序集文件。与需要 DocumentFormat.OpenXml.dll 的 XLSX 渲染相比,XLS 渲染也没有任何外部依赖项。您必须收集有关异常的更多信息以查看导致问题的原因。通常有助于将跟踪侦听器附加到您的应用程序并检查其日志以查看异常堆栈跟踪或其他重要细节。另一种选择是使用程序集绑定日志查看器显示程序集绑定的信息,并查看其日志是否会为您提供有关正在发生的事情的任何提示。请注意,产品要求包括 .NET Framework 4+ Full Profile,并考虑它是否适用于您的方案。

于 2017-10-30T13:04:25.463 回答