0

如何直接从通过水晶报表导出到流功能导出的流中打开文件?我正在使用 vs2010 和 sap 水晶报告。

MemoryStream m = (MemoryStream)(PReport.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat));
FileStream f = new FileStream(purchaseCombo.SelectedItem.ToString(),FileMode.Create,System.IO.FileAccess.Write);
byte[] bytes = new byte[m.Length];
m.Read(bytes, 0, (int)m.Length);
f.Write(bytes, 0, bytes.Length);
f.Close();
m.Close();
4

1 回答 1

0

这取决于您要导出的文件。由于 Crystal Reports 可以导出多种不同的文件类型,并且每种文件类型都有一个可以处理它的特定程序,因此您需要搜索您感兴趣的确切文件类型。例如,通过在 Internet 上的快速搜索,我发现可以使用NavigateToStream方法在 WebBrowser 组件(在 WPF 应用程序中)内直接预览 html 文件流。也许有一些 3rd 方组件公开了直接从内存打开文件的方法。

不过,最简单的方法是使用ExportToDisk方法将临时文件导出到磁盘而不是内存,并在使用后将其删除,因为许多组件从路径而不是内存中读取。在导出文件之前,您可以使用GetTempFileName方法来创建和命名一个临时文件。

于 2013-07-20T20:17:26.780 回答