Example #1
0
        /// <summary>
        /// Do this action
        /// </summary>
        public override void Do()
        {
            backupData = Worksheet.GetPartialGrid(Range);

            affectedRange = this.Worksheet.FixRange(this.Range);

            int r1 = Range.Row;
            int c1 = Range.Col;
            int r2 = Range.EndRow;
            int c2 = Range.EndCol;

            int rowCount = Worksheet.RowCount;
            int colCount = Worksheet.ColumnCount;

            isFullColSelected  = affectedRange.Rows == rowCount;
            isFullRowSelected  = affectedRange.Cols == colCount;
            isFullGridSelected = isFullRowSelected && isFullColSelected;

            // update default styles
            if (isFullGridSelected)
            {
                backupRootStyle = WorksheetRangeStyle.Clone(Worksheet.RootStyle);

                this.backupRowStyles = new WorksheetRangeStyle[rowCount];
                this.backupColStyles = new WorksheetRangeStyle[colCount];

                // remote styles if it is already setted in full-row
                for (int r = 0; r < rowCount; r++)
                {
                    RowHeader rowHead = Worksheet.RetrieveRowHeader(r);
                    if (rowHead != null && rowHead.InnerStyle != null)
                    {
                        this.backupRowStyles[r] = WorksheetRangeStyle.Clone(rowHead.InnerStyle);
                    }
                }

                // remote styles if it is already setted in full-col
                for (int c = 0; c < colCount; c++)
                {
                    ColumnHeader colHead = Worksheet.RetrieveColumnHeader(c);
                    if (colHead != null && colHead.InnerStyle != null)
                    {
                        this.backupColStyles[c] = WorksheetRangeStyle.Clone(colHead.InnerStyle);
                    }
                }
            }
            else if (isFullRowSelected)
            {
                backupRowStyles = new WorksheetRangeStyle[r2 - r1 + 1];
                for (int r = r1; r <= r2; r++)
                {
                    backupRowStyles[r - r1] = WorksheetRangeStyle.Clone(Worksheet.RetrieveRowHeader(r).InnerStyle);
                }
            }
            else if (isFullColSelected)
            {
                backupColStyles = new WorksheetRangeStyle[c2 - c1 + 1];
                for (int c = c1; c <= c2; c++)
                {
                    backupColStyles[c - c1] = WorksheetRangeStyle.Clone(Worksheet.RetrieveColumnHeader(c).InnerStyle);
                }
            }

            Worksheet.SetRangeStyles(affectedRange, style);
        }
Example #2
0
        /// <summary>
        /// Undo this action
        /// </summary>
        public override void Undo()
        {
            if (this.isFullGridSelected)
            {
                Worksheet.RootStyle = WorksheetRangeStyle.Clone(backupRootStyle);

                // remote styles if it is already setted in full-row
                for (int r = 0; r < backupRowStyles.Length; r++)
                {
                    if (backupRowStyles[r] != null)
                    {
                        RowHeader rowHead = Worksheet.RetrieveRowHeader(r);
                        if (rowHead != null)
                        {
                            rowHead.InnerStyle = WorksheetRangeStyle.Clone(backupRowStyles[r]);
                            //rowHead.InnerStyle.Flag = PlainStyleFlag.None;
                            //rowHead.Style.BackColor = System.Drawing.Color.Empty;
                        }
                    }
                }

                // remote styles if it is already setted in full-col
                for (int c = 0; c < backupColStyles.Length; c++)
                {
                    if (backupColStyles[c] != null)
                    {
                        ColumnHeader colHead = Worksheet.RetrieveColumnHeader(c);
                        if (colHead != null)
                        {
                            colHead.InnerStyle = WorksheetRangeStyle.Clone(backupColStyles[c]);
                            //colHead.InnerStyle.Flag = PlainStyleFlag.None;
                            //colHead.Style.BackColor = System.Drawing.Color.Empty;
                        }
                    }
                }
            }
            else if (isFullRowSelected)
            {
                for (int r = 0; r < backupRowStyles.Length; r++)
                {
                    RowHeader rowHead = Worksheet.RetrieveRowHeader(r + affectedRange.Row);
                    if (rowHead != null)
                    {
                        rowHead.InnerStyle = backupRowStyles[r];
                    }
                }
            }
            else if (isFullColSelected)
            {
                for (int c = 0; c < backupColStyles.Length; c++)
                {
                    ColumnHeader colHead = Worksheet.RetrieveColumnHeader(c + affectedRange.Col);
                    if (colHead != null)
                    {
                        colHead.InnerStyle = backupColStyles[c];
                    }
                }
            }

            Worksheet.SetPartialGrid(affectedRange, backupData, PartialGridCopyFlag.CellStyle);
        }