public void Copy(Worksheet src, int fromRow, int fromColumn, int toRow, int toColumn, int rowCount, int columnCount)
 {
     if (object.ReferenceEquals(src, this.Sheet))
     {
         this.Copy(fromRow, fromColumn, toRow, toColumn, rowCount, columnCount);
     }
     else
     {
         int offsetRow    = toRow - fromRow;
         int offsetColumn = toColumn - fromColumn;
         for (int i = 0; i < rowCount; i++)
         {
             for (int j = 0; j < columnCount; j++)
             {
                 Sparkline sparkline = src.GetSparkline(fromRow + i, fromColumn + j);
                 if (sparkline != null)
                 {
                     Sparkline sparkline2 = sparkline.Clone();
                     sparkline2.Row    = toRow + i;
                     sparkline2.Column = toColumn + j;
                     CalcExpression dateAxisReference = sparkline2.DateAxisReference;
                     if (dateAxisReference != null)
                     {
                         if (CanOffset(dateAxisReference, offsetRow, offsetColumn, ((Worksheet)this.Sheet).RowCount, ((Worksheet)this.Sheet).ColumnCount))
                         {
                             sparkline2.DateAxisReference = dateAxisReference.Offset(offsetRow, offsetColumn, false, true);
                         }
                         else
                         {
                             sparkline2.DateAxisReference = new CalcErrorExpression(CalcErrors.Reference);
                         }
                     }
                     CalcExpression dataReference = sparkline2.DataReference;
                     if (dataReference != null)
                     {
                         if (CanOffset(dataReference, offsetRow, offsetColumn, ((Worksheet)this.Sheet).RowCount, ((Worksheet)this.Sheet).ColumnCount))
                         {
                             sparkline2.DataReference = dataReference.Offset(offsetRow, offsetColumn, false, true);
                         }
                         else
                         {
                             sparkline2.DataReference = new CalcErrorExpression(CalcErrors.Reference);
                         }
                     }
                     this.Add(sparkline2.Group);
                     this.Sheet.SetSparkline(toRow + i, toColumn + j, sparkline2);
                 }
                 else
                 {
                     this.Sheet.SetSparkline(toRow + i, toColumn + j, null);
                 }
             }
         }
     }
 }
 public void Move(Worksheet src, int fromRow, int fromColumn, int toRow, int toColumn, int rowCount, int columnCount)
 {
     if (object.ReferenceEquals(src, this.Sheet))
     {
         this.Move(fromRow, fromColumn, toRow, toColumn, rowCount, columnCount);
     }
     else
     {
         this.MoveDataRange(src, fromRow, fromColumn, toRow, toColumn, rowCount, columnCount);
         for (int i = 0; i < rowCount; i++)
         {
             for (int j = 0; j < columnCount; j++)
             {
                 Sparkline item = src.GetSparkline(fromRow + i, fromColumn + j);
                 if (item != null)
                 {
                     item.Row    = toRow + i;
                     item.Column = toColumn + j;
                     SparklineGroup group  = item.Group;
                     SparklineGroup group2 = group.Clone();
                     group.Remove(item);
                     if (group.Count <= 0)
                     {
                         src.SheetSparklineGroupManager.Remove(group);
                     }
                     group2.Add(item);
                     this.Add(group2);
                     this.Sheet.SetSparkline(toRow + i, toColumn + j, item);
                 }
                 else
                 {
                     this.Sheet.SetSparkline(toRow + i, toColumn + j, null);
                 }
                 ((ISparklineSheet)src).SetSparkline(fromRow + i, fromColumn + j, null);
             }
         }
     }
 }