Пример #1
0
        private void ManageExpander(ExcelRenderer renderer)
        {
            using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible))
            {
                if (renderer.BodyPartRenderer != null && renderer.BodyPartRenderer.RenderedRange != null ||
                    renderer.FooterPartRenderer != null && renderer.FooterPartRenderer.RenderedRange != null)
                {
                    bool carryOn = true;
                    if (renderer.HeaderPartRenderer != null && renderer.HasExpander)
                    {
                        carryOn = renderer.IsExpanded;

                        int toShowHideSize = renderer.RenderedArea.Height - renderer.HeaderPartRenderer.RenderedArea.Height;
                        if (toShowHideSize > 0)
                        {
                            ExcelInterop.Range toShowHide = renderer.RenderedRange.Offset[renderer.HeaderPartRenderer.RenderedArea.Height, Type.Missing];
                            toShowHide = toShowHide.Resize[toShowHideSize, Type.Missing];
                            toShowHide.EntireRow.Hidden = !renderer.IsExpanded;

                            // ExcelApplication.ReleaseComObject(toShowHide);
                            toShowHide = null;
                        }
                    }

                    if (carryOn)
                    {
                        foreach (ExcelRenderer nestedRenderer in renderer.NestedRenderer)
                        {
                            ManageExpander(nestedRenderer);
                        }
                    }
                }
            }
        }
Пример #2
0
        public void Can_Render_DateTime()
        {
            var token  = Parser.Parse(@"{""created_at"": ""2016-09-13T20:40:41Z""}");
            var result = ExcelRenderer.Render(token["created_at"], "http://api.test.com/numbers", true);

            Assert.AreEqual(new DateTime(2016, 9, 13, 20, 40, 41), result);
        }
Пример #3
0
        public override IEnumerable <LocalRenderingExtensionInfo> ListRenderingExtensions()
        {
            if (m_renderingExtensions == null)
            {
                List <LocalRenderingExtensionInfo> list = new List <LocalRenderingExtensionInfo>();
                RPLRenderer rPLRenderer = new RPLRenderer();
                list.Add(new LocalRenderingExtensionInfo("RPL", rPLRenderer.LocalizedName, isVisible: false, typeof(RPLRenderer), isExposedExternally: false));
                ExcelRenderer excelRenderer = new ExcelRenderer();
                list.Add(new LocalRenderingExtensionInfo("Excel", excelRenderer.LocalizedName, isVisible: false, typeof(ExcelRenderer), isExposedExternally: true));
                ExcelOpenXmlRenderer excelOpenXmlRenderer = new ExcelOpenXmlRenderer();
                list.Add(new LocalRenderingExtensionInfo("EXCELOPENXML", excelOpenXmlRenderer.LocalizedName, isVisible: true, typeof(ExcelOpenXmlRenderer), isExposedExternally: true));
                ImageRenderer imageRenderer = new ImageRenderer();
                list.Add(new LocalRenderingExtensionInfo("IMAGE", imageRenderer.LocalizedName, isVisible: false, typeof(ImageRenderer), isExposedExternally: true));
                PDFRenderer pDFRenderer = new PDFRenderer();
                list.Add(new LocalRenderingExtensionInfo("PDF", pDFRenderer.LocalizedName, isVisible: true, typeof(PDFRenderer), isExposedExternally: true));
                WordDocumentRenderer wordDocumentRenderer = new WordDocumentRenderer();
                list.Add(new LocalRenderingExtensionInfo("WORD", wordDocumentRenderer.LocalizedName, isVisible: false, typeof(WordDocumentRenderer), isExposedExternally: true));
                WordOpenXmlDocumentRenderer wordOpenXmlDocumentRenderer = new WordOpenXmlDocumentRenderer();
                list.Add(new LocalRenderingExtensionInfo("WORDOPENXML", wordOpenXmlDocumentRenderer.LocalizedName, isVisible: true, typeof(WordOpenXmlDocumentRenderer), isExposedExternally: true));

                list.Add(new LocalRenderingExtensionInfo("MHTML", new ReportingServices.Rendering.HtmlRenderer.MHtmlRenderingExtension().LocalizedName, isVisible: true, typeof(ReportingServices.Rendering.HtmlRenderer.MHtmlRenderingExtension), isExposedExternally: true));
                list.Add(new LocalRenderingExtensionInfo("HTML4.0", new ReportingServices.Rendering.HtmlRenderer.Html40RenderingExtension().LocalizedName, isVisible: true, typeof(ReportingServices.Rendering.HtmlRenderer.Html40RenderingExtension), isExposedExternally: true));
                list.Add(new LocalRenderingExtensionInfo("HTML5", new ReportingServices.Rendering.HtmlRenderer.Html5RenderingExtension().LocalizedName, isVisible: true, typeof(ReportingServices.Rendering.HtmlRenderer.Html5RenderingExtension), isExposedExternally: true));

                m_renderingExtensions = list;
            }
            return(m_renderingExtensions);
        }
Пример #4
0
        public void Can_Render_Simple_Array_of_Arrays()
        {
            var token  = Parser.Parse(@"[[1,2,3],[4,5,6]]");
            var result = ExcelRenderer.Render(token, "http://api.test.com/numbers", true);

            Assert.AreEqual(new object[, ] {
                { 1, 2, 3 }, { 4, 5, 6 }
            }, result);
        }
Пример #5
0
        public void Can_Render_Array_With_Object()
        {
            var token  = Parser.Parse(@"[1,2, {""a"": 5}]");
            var result = ExcelRenderer.Render(token, "http://api.test.com/numbers", true);

            Assert.AreEqual(new object[, ] {
                { 1 }, { 2 }, { "http://api.test.com/numbers#2" }
            }, result);
        }
Пример #6
0
        public void Can_Render_Simple_Array()
        {
            var token  = Parser.Parse(@"[1,2,3,4,5,6]");
            var result = ExcelRenderer.Render(token, "http://api.test.com/numbers", true);

            Assert.AreEqual(new object[, ] {
                { 1 }, { 2 }, { 3 }, { 4 }, { 5 }, { 6 }
            }, result);
        }
Пример #7
0
 private bool CheckHeaderAsExpander(ExcelRenderer renderer, ExcelInterop.Range target)
 {
     if (renderer.HeaderPartRenderer?.RenderedRange != null && ETKExcel.ExcelApplication.Application.Intersect(renderer.HeaderPartRenderer.RenderedRange, target) != null)
     {
         renderer.IsExpanded = !renderer.IsExpanded;
         ManageExpander(renderer);
         return(true);
     }
     else
     {
         foreach (ExcelRenderer nestedRenderer in renderer.NestedRenderer)
         {
             if (CheckHeaderAsExpander(nestedRenderer, target))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Пример #8
0
 static ControlService()
 {
     if (m_renderingExtensions == null)
     {
         List <LocalRenderingExtensionInfo> list = new List <LocalRenderingExtensionInfo>();
         //Html.HTMLRenderer htmlRenderer = new Html.HTMLRenderer();
         //list.Add(new LocalRenderingExtensionInfo("HTML", htmlRenderer.LocalizedName, false, typeof(Html.HTMLRenderer), true));
         RPLRenderer rPLRenderer = new RPLRenderer();
         list.Add(new LocalRenderingExtensionInfo("RPL", rPLRenderer.LocalizedName, false, typeof(RPLRenderer), false));
         ExcelRenderer excelRenderer = new ExcelRenderer();
         list.Add(new LocalRenderingExtensionInfo("Excel", excelRenderer.LocalizedName, false, typeof(ExcelRenderer), true));
         ExcelOpenXmlRenderer excelOpenXmlRenderer = new ExcelOpenXmlRenderer();
         list.Add(new LocalRenderingExtensionInfo("EXCELOPENXML", excelOpenXmlRenderer.LocalizedName, true, typeof(ExcelOpenXmlRenderer), true));
         ImageRenderer imageRenderer = new ImageRenderer();
         list.Add(new LocalRenderingExtensionInfo("IMAGE", imageRenderer.LocalizedName, false, typeof(ImageRenderer), true));
         PDFRenderer pDFRenderer = new PDFRenderer();
         list.Add(new LocalRenderingExtensionInfo("PDF", pDFRenderer.LocalizedName, true, typeof(PDFRenderer), true));
         WordDocumentRenderer wordDocumentRenderer = new WordDocumentRenderer();
         list.Add(new LocalRenderingExtensionInfo("WORD", wordDocumentRenderer.LocalizedName, false, typeof(WordDocumentRenderer), true));
         WordOpenXmlDocumentRenderer wordOpenXmlDocumentRenderer = new WordOpenXmlDocumentRenderer();
         list.Add(new LocalRenderingExtensionInfo("WORDOPENXML", wordOpenXmlDocumentRenderer.LocalizedName, true, typeof(WordOpenXmlDocumentRenderer), true));
         m_renderingExtensions = list;
     }
 }
Пример #9
0
        public byte[] ToExcel()
        {
            IRenderer renderer = new ExcelRenderer();

            return(renderer.Render(_report));
        }
        private ActionResult Execute(string key, string opt, string ext, bool download, bool printing)
        {
            if (key.IsEmptyOrNull())
            {
                throw new ArgumentNullException(nameof(key));
            }

            var reportInfo = ReportRegistry.GetReport(key);

            if (reportInfo == null)
            {
                throw new ArgumentOutOfRangeException(nameof(key));
            }

            if (reportInfo.Permission != null)
            {
                Context.Permissions.ValidatePermission(reportInfo.Permission, Context.Localizer);
            }

            var report = ActivatorUtilities.CreateInstance(HttpContext.RequestServices, reportInfo.Type) as IReport;
            var json   = opt.TrimToNull();

            if (json != null)
            {
                JsonConvert.PopulateObject(json, report);
            }

            byte[] renderedBytes = null;

            if (report is IDataOnlyReport dataOnlyReport)
            {
                ext           = "xlsx";
                renderedBytes = ExcelRenderer.Render(dataOnlyReport);
            }
            else if (report is IExternalReport)
            {
                var url = report.GetData() as string;
                if (string.IsNullOrEmpty(url))
                {
                    throw new InvalidProgramException("External reports must return a URL string from GetData() method!");
                }

                return(new RedirectResult(url));
            }
            else
            {
                ext = (ext ?? "html").ToLowerInvariant();

                if (ext == "htm" || ext == "html")
                {
                    var result = RenderAsHtml(report, download, printing, ref renderedBytes);
                    if (!download)
                    {
                        return(result);
                    }
                }
                else if (ext == "pdf")
                {
                    renderedBytes = RenderAsPdf(report, key, opt);
                }
                else
                {
                    throw new ArgumentOutOfRangeException(nameof(ext));
                }
            }

            return(PrepareFileResult(report, ext, download, renderedBytes, reportInfo));
        }