예제 #1
0
        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));
        }
예제 #2
0
        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);
            }
        }