我有一个使用 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);
我们无法弄清楚为什么会这样。以下是我们所知道的:
- 报告的数据在两种情况下都是相同的。
- 在这两种情况下,正在执行的 C# 代码是相同的。
- 该问题可以在其他(非开发)机器上重现。
- 在单个开发人员计算机(Window 7/Excel 2010)上,不会发生异常并且报告按预期生成。作为额外的奖励,这台机器还包含用于开发报告的 Telerik 许可证。
- 在另一台装有 Windows 7/Excel 2010 的非开发机器上,我们得到了同样的异常。
- 我们在 Windows 7/Excel 2013 机器上测试了该应用程序并得到了异常。
- 我们尝试更新到最新的 EdgeJs 无济于事。
- 我们还以适用于这两个应用程序的 PDF 格式呈现报告。