예제 #1
0
        public void Render()
        {
            ExcelInterop.Worksheet worksheetTo = currentRenderingTo.Worksheet;
            if (bindingContextPart != null)
//                && ((bindingContextPart is LinkedTemplateDefinition && ((LinkedTemplateDefinition) bindingContextPart).MinOccurencesMethod != null || bindingContextPart.ElementsToRender.ElementsToRender != null && bindingContextPart.ElementsToRender.ElementsToRender.Any())
            {
                if (partToRenderDefinition.HasLinkedTemplates || partToRenderDefinition.ContainMultiLinesCells)
                {
                    ManageTemplateWithLinkedTemplates();
                }
                else
                {
                    ManageTemplateWithoutLinkedTemplates();
                }
            }
            if (Width > 0 && Height > 0)
            {
                //RenderedArea = new RenderedArea(firstRangeTo.Column, firstRangeTo.Row, Width, Height);
                RenderedArea  = new RenderedArea(firstRangeTo.Column, firstRangeTo.Row, Width, Height);
                RenderedRange = firstRangeTo.Resize[Height, Width];
            }

            ExcelApplication.ReleaseComObject(worksheetTo);
            worksheetTo = null;

            elementFirstRangeTo  = null;
            currentRenderingFrom = null;
            currentRenderingTo   = null;
        }
예제 #2
0
        public virtual void Render()
        {
            int[] xs = new int[3];
            int[] ys = new int[3];

            ExcelInterop.Range nextFirstOutputCell = null;
            if (templateDefinition.Header != null)
            {
                HeaderPartRenderer = ExcelPartRenderer.CreateInstance(this, (ExcelTemplateDefinitionPart)templateDefinition.Header, bindingContext.Header, firstOutputCell, false);
                HeaderPartRenderer.Render();
                if (HeaderPartRenderer.RenderedArea != null && HeaderPartRenderer.RenderedArea.Width != 0)
                {
                    xs[0] = HeaderPartRenderer.RenderedArea.Width;
                    ys[0] = HeaderPartRenderer.RenderedArea.Height;

                    int xOffset = templateDefinition.Orientation == Orientation.Horizontal ? xs[0] : 0;
                    int yOffset = templateDefinition.Orientation == Orientation.Horizontal ? 0 : ys[0];
                    nextFirstOutputCell = firstOutputCell.Offset[yOffset, xOffset];
                }
            }

            if (templateDefinition.Body != null)
            {
                BodyPartRenderer = ExcelPartRenderer.CreateInstance(this, (ExcelTemplateDefinitionPart)templateDefinition.Body, bindingContext.Body, nextFirstOutputCell ?? firstOutputCell, true);
                BodyPartRenderer.Render();
                if (BodyPartRenderer.RenderedArea != null && BodyPartRenderer.RenderedArea.Width != 0)
                {
                    xs[1] = BodyPartRenderer.RenderedArea.Width;
                    ys[1] = BodyPartRenderer.RenderedArea.Height;

                    int xOffset = templateDefinition.Orientation == Orientation.Horizontal ? xs[1] : 0;
                    int yOffset = templateDefinition.Orientation == Orientation.Horizontal ? 0 : ys[1];
                    nextFirstOutputCell = (nextFirstOutputCell ?? firstOutputCell).Offset[yOffset, xOffset];
                }
            }

            if (templateDefinition.Footer != null)
            {
                FooterPartRenderer = ExcelPartRenderer.CreateInstance(this, (ExcelTemplateDefinitionPart)templateDefinition.Footer, bindingContext.Footer, nextFirstOutputCell ?? firstOutputCell, false);
                FooterPartRenderer.Render();
                if (FooterPartRenderer.RenderedArea != null && FooterPartRenderer.RenderedArea.Width != 0)
                {
                    xs[2] = FooterPartRenderer.RenderedArea.Width;
                    ys[2] = FooterPartRenderer.RenderedArea.Height;
                }
            }

            int width  = templateDefinition.Orientation == Orientation.Vertical ? xs.Max() : xs.Sum();
            int height = templateDefinition.Orientation == Orientation.Vertical ? ys.Sum() : ys.Max();

            if (width > 0 && height > 0)
            {
                RenderedArea  = new RenderedArea(firstOutputCell.Column, firstOutputCell.Row, width, height);
                RenderedRange = firstOutputCell.Resize[height, width];
                Width         = width;
                Height        = height;
            }
        }