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); } } } } }
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); }
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); }
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); }
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); }
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); }
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); }
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; } }
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)); }