public Task <ExportReportResult> ExportStiReportStreamAsync(Stream input, IStumulsoftReportInfo ri, String targetFormat, Stream output) { var r = StiReportExtensions.CreateReport(input, ri.Name); r.AddDataModel(ri.DataModel); var rr = new ExportReportResult(); if (ri.Variables != null) { r.AddVariables(ri.Variables); } if (targetFormat == "pdf") { r.Render(); r.ExportDocument(StiExportFormat.Pdf, output, StiReportExtensions.GetDefaultPdfSettings()); rr.ContentType = "application/pdf"; rr.Extension = "pdf"; } else if (targetFormat == "excel") { r.Render(); r.ExportDocument(StiExportFormat.Excel2007, output, StiReportExtensions.GetDefaultXlSettings()); rr.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; rr.Extension = "xlsx"; } else if (targetFormat == "word") { r.Render(); r.ExportDocument(StiExportFormat.Word2007, output, StiReportExtensions.GetDefaultWordSettings()); rr.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; rr.Extension = "docx"; } else if (targetFormat == "opentext") { r.Render(); r.ExportDocument(StiExportFormat.Odt, output, StiReportExtensions.GetDefaultOdtSettings()); rr.ContentType = "application/vnd.oasis.opendocument.text"; rr.Extension = "odt"; } else if (targetFormat == "opensheet") { r.Render(); r.ExportDocument(StiExportFormat.Ods, output, StiReportExtensions.GetDefaultOdsSettings()); rr.ContentType = "application/vnd.oasis.opendocument.spreadsheet"; rr.Extension = "ods"; } else { throw new NotImplementedException($"Format '{targetFormat}' is not supported in this version"); } return(Task.FromResult(rr)); }
public async Task ExportDesktop(DesktopReport rep, HttpResponseBase response) { // TODO: query string ??? _reportHelper.SetupLicense(); try { using (var rr = Profiler.CurrentRequest.Start(ProfileAction.Report, $"export: {rep.Report}")) { var url = $"/_report/{rep.Base.RemoveHeadSlash()}/{rep.Report}/{rep.Id}"; ReportInfo ri = await GetReportInfoDesktop(rep, url, CreateParamsFromQueryString()); ExportReportResult err = null; switch (ri.Type) { case RequestReportType.stimulsoft: err = await _reportHelper.ExportStiReportStreamAsync(ri, rep.Format, response.OutputStream); break; case RequestReportType.xml: throw new NotImplementedException("ExportDesktop. RequestReportType.xml"); case RequestReportType.json: throw new NotImplementedException("ExportDesktop. RequestReportType.json"); } if (err != null) { response.ContentType = err.ContentType; if (rep.AddContentDisposition) { var cdh = new ContentDispositionHeaderValue("attachment") { FileNameStar = $"{_baseController.Localize(ri.Name)}.{err.Extension}" }; response.Headers.Add("Content-Disposition", cdh.ToString()); } } } } catch (Exception ex) { response.ContentType = "text/html"; response.ContentEncoding = Encoding.UTF8; if (ex.InnerException != null) { ex = ex.InnerException; } response.Write(ex.Message); } }