Exemple #1
0
 private void OnSheetIsDeactivated()
 {
     using (FreezeExcel freeExcel = new FreezeExcel())
     {
         taskPane.Visible = false;
     }
 }
Exemple #2
0
        public void Clear()
        {
            if (!IsDisposed && RenderedRange != null)
            {
                using (FreezeExcel freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible))
                {
                    try
                    {
                        IsClearing = true;

                        RenderedRange.Clear();
                        if (View.TemplateDefinition.Orientation == Orientation.Horizontal)
                        {
                            RenderedRange.EntireColumn.Hidden = false;
                        }
                        else
                        {
                            RenderedRange.EntireRow.Hidden = false;
                        }

                        View.ClearingCell?.Copy(RenderedRange);

                        RowDecorators.Clear();
                        ClearRenderingData();
                    }
                    finally
                    {
                        IsClearing = false;
                    }
                }
            }
        }
Exemple #3
0
 private void OnSheetIsActivated()
 {
     using (FreezeExcel freeExcel = new FreezeExcel())
     {
         taskPane.Visible = true;
     }
 }
Exemple #4
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);
                        }
                    }
                }
            }
        }
Exemple #5
0
        public bool OnDataChanged(ExcelInterop.Range target)
        {
            bool ret = false;

            if (!IsDisposed && !IsClearing && contextItems != null)
            {
                FreezeExcel freezeExcel = null;
                try
                {
                    foreach (ExcelInterop.Range cell in target.Cells)
                    {
                        IBindingContextItem contextItem = null;
                        // Because of the merge cells ...
                        try
                        { contextItem = contextItems[cell.Row - View.FirstOutputCell.Row, cell.Column - View.FirstOutputCell.Column]; }
                        catch
                        { }

                        if (contextItem != null)
                        {
                            object retValue;
                            bool   mustUpdate = contextItem.UpdateDataSource(cell.Value2, out retValue);
                            if (mustUpdate)
                            {
                                if (freezeExcel == null)
                                {
                                    freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible);
                                }

                                //if (!object.Equals(cell.Value2, retValue))
                                cell.Value2 = retValue;
                            }

                            if (!(contextItem is BindingFilterContextItem))
                            {
                                ret = true;
                            }
                        }
                    }
                }
                finally
                {
                    if (freezeExcel != null)
                    {
                        freezeExcel.Dispose();
                    }
                }
            }
            return(ret);
        }
Exemple #6
0
        public void ExecuteTopics(IEnumerable <IExcelTestTopic> topics)
        {
            Status = "Executing ...";
            Action action = new Action(() =>
            {
                using (FreezeExcel freeExcel_ = new FreezeExcel())
                {
                    foreach (IExcelTestTopic topic in topics)
                    {
                        topic.ExecuteTests();
                    }
                }
            });

            ETKExcel.ExcelApplication.PostAsynchronousActions(new[] { action }, () => Status = string.Empty);
        }
Exemple #7
0
        public ExcelTestsManager()
        {
            IEnumerable <Type> types = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(ExcelTestTopic)));

            TestTopics = types.Select(t => Activator.CreateInstance(t, new[] { this }) as IExcelTestTopic)
                         .OrderBy(t => t.Id)
                         .ThenBy(t => t.Description)
                         .ToArray();

            using (FreezeExcel freeExcel = new FreezeExcel())
            {
                foreach (IExcelTestTopic topic in TestTopics)
                {
                    topic.Init();
                }
            }
        }
Exemple #8
0
        /// <summary>
        /// Bind the template to Excel => RenderView Excel cells based on the datasource currently injected.
        /// </summary>
        internal void RenderViewDataOnly()
        {
            lock (syncRoot)
            {
                if (!IsDisposed && Renderer != null)
                {
                    if (ETKExcel.ExcelApplication.IsInEditMode())
                    {
                        throw new COMException("Excel is on Edit mode");
                    }

                    try
                    {
                        if (Renderer.RenderedRange == null)
                        {
                            RenderView();
                        }
                        else
                        {
                            using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible))
                            {
                                if (BindingContext != null && BindingContext.Body.ElementsToRender != null)
                                {
                                    BeforeRendering?.Invoke(true);

                                    Renderer.RenderDataOnly();
                                    if (log.GetLogLevel() == LogType.Debug)
                                    {
                                        log.LogFormat(LogType.Debug, "Sheet '{0}', View '{1}' from '{2}' render data only failed.", ViewSheet.Name, Ident, TemplateDefinition.Name);
                                    }

                                    AfterRendering?.Invoke(true);;

                                    CurrentSelectedCell?.Select();
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        var message = $"Sheet '{ViewSheet.Name}', View '{this.Ident}' from '{TemplateDefinition.Name}' render data only failed.";
                        throw new EtkException(message, ex, false);
                    }
                }
            }
        }
Exemple #9
0
        /// <summary>
        /// Bind the template to Excel => Refresh Excel cells from the datasource currently injected.
        /// </summary>
        internal void RenderView()
        {
            lock (syncRoot)
            {
                if (!IsDisposed && Renderer != null)
                {
                    if (ETKExcel.ExcelApplication.IsInEditMode())
                    {
                        throw new COMException("Excel is on Edit mode");
                    }

                    try
                    {
                        using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible))
                        {
                            BeforeRendering?.Invoke(false);

                            // Clear the previous rendering.
                            ////////////////////////////////
                            CurrentSelectedCell  = null;
                            currentSelectedRange = null;
                            Renderer.Clear();

                            Renderer.Render();

                            ExecuteAutoFit();

                            if (log.GetLogLevel() == LogType.Debug)
                            {
                                log.LogFormat(LogType.Debug, "Sheet '{0}', View '{1}' from '{2}' rendered.", ViewSheet.Name, this.Ident, TemplateDefinition.Name);
                            }

                            AfterRendering?.Invoke(true);
                            Renderer.AfterRendering();
                        }
                    }
                    catch (Exception ex)
                    {
                        string message = $"Sheet '{ViewSheet.Name}', View '{this.Ident}' from '{TemplateDefinition.Name}' render failed.";
                        throw new EtkException(message, ex, false);
                    }
                }
            }
        }
Exemple #10
0
        public override void ExecuteSearch()
        {
            using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible))
            {
                if (Renderer?.BodyPartRenderer?.RenderedArea == null)
                {
                    return;
                }

                var toShowOrHide = new List <KeyValuePair <ExcelInterop.Range, bool> >();

                ExcelInterop.Range firstRange    = ViewSheet.Cells[Renderer.BodyPartRenderer.RenderedArea.YPos, Renderer.BodyPartRenderer.RenderedArea.XPos];
                ExcelInterop.Range lastRange     = ViewSheet.Cells[Renderer.BodyPartRenderer.RenderedArea.YPos + Renderer.BodyPartRenderer.RenderedArea.Height - 1, Renderer.BodyPartRenderer.RenderedArea.XPos + Renderer.BodyPartRenderer.RenderedArea.Width - 1];
                ExcelInterop.Range renderedRange = ViewSheet.Range[firstRange, lastRange];
                ExcelInterop.Range rowsOrColumns = TemplateDefinition.Orientation == Orientation.Horizontal ? renderedRange.Columns : renderedRange.Cells.Rows;
                if (string.IsNullOrEmpty(SearchValue))
                {
                    foreach (ExcelInterop.Range rowOrColumn in rowsOrColumns)
                    {
                        toShowOrHide.Add(new KeyValuePair <ExcelInterop.Range, bool>(rowOrColumn, false));
                    }
                }
                else
                {
                    string searchValueUpper = SearchValue.ToUpper();
                    foreach (ExcelInterop.Range rowOrColumn in rowsOrColumns)
                    {
                        bool toHide = true;
                        foreach (ExcelInterop.Range cell in rowOrColumn.Cells)
                        {
                            string cellText;
                            if (cell.MergeCells)
                            {
                                cellText = cell.MergeArea[1.1].Text;
                            }
                            else
                            {
                                cellText = cell.Text;
                            }
                            if (!string.IsNullOrEmpty(cellText) && cellText.ToUpper().Contains(searchValueUpper))
                            {
                                toHide = false;
                                break;
                            }
                        }
                        toShowOrHide.Add(new KeyValuePair <ExcelInterop.Range, bool>(rowOrColumn, toHide));
                    }
                }

                foreach (KeyValuePair <ExcelInterop.Range, bool> showOrHide in toShowOrHide)
                {
                    ExcelInterop.Range cells;
                    if (TemplateDefinition.Orientation == Orientation.Horizontal)
                    {
                        cells = ViewSheet.Columns[showOrHide.Key.Column];
                    }
                    else
                    {
                        cells = ViewSheet.Rows[showOrHide.Key.Row];
                    }
                    cells.Hidden = showOrHide.Value;
                    cells        = null;
                }

                if (string.IsNullOrEmpty(SearchValue))
                {
                    ManageExpander();
                }

                firstRange    = null;
                lastRange     = null;
                renderedRange = null;
                rowsOrColumns = null;
            }
        }