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