private static void InsertSparkLinesAddress(ExcelRangeBase range, eShiftTypeInsert shift, ExcelAddressBase effectedAddress) { foreach (var slg in range.Worksheet.SparklineGroups) { if (slg.DateAxisRange != null && effectedAddress.Collide(slg.DateAxisRange) >= ExcelAddressBase.eAddressCollition.Inside) { string address; if (shift == eShiftTypeInsert.Down) { address = slg.DateAxisRange.AddRow(range._fromRow, range.Rows).Address; } else { address = slg.DateAxisRange.AddColumn(range._fromCol, range.Columns).Address; } slg.DateAxisRange = range.Worksheet.Cells[address]; } foreach (var sl in slg.Sparklines) { if (shift == eShiftTypeInsert.Down) { if (effectedAddress.Collide(sl.RangeAddress) >= ExcelAddressBase.eAddressCollition.Inside || range.CollideFullRow(sl.RangeAddress._fromRow, sl.RangeAddress._toRow)) { sl.RangeAddress = sl.RangeAddress.AddRow(range._fromRow, range.Rows); } if (sl.Cell.Row >= range._fromRow && sl.Cell.Column >= range._fromCol && sl.Cell.Column <= range._toCol) { sl.Cell = new ExcelCellAddress(sl.Cell.Row + range.Rows, sl.Cell.Column); } } else { if (effectedAddress.Collide(sl.RangeAddress) >= ExcelAddressBase.eAddressCollition.Inside || range.CollideFullColumn(sl.RangeAddress._fromCol, sl.RangeAddress._toCol)) { sl.RangeAddress = sl.RangeAddress.AddColumn(range._fromCol, range.Columns); } if (sl.Cell.Column >= range._fromCol && sl.Cell.Row >= range._fromRow && sl.Cell.Row <= range._toRow) { sl.Cell = new ExcelCellAddress(sl.Cell.Row, sl.Cell.Column + range.Columns); } } } } }
private static void DeleteSparkLinesAddress(ExcelRangeBase range, eShiftTypeDelete shift, ExcelAddressBase effectedAddress) { var delSparklineGroups = new List <ExcelSparklineGroup>(); foreach (var slg in range.Worksheet.SparklineGroups) { if (slg.DateAxisRange != null && effectedAddress.Collide(slg.DateAxisRange) >= ExcelAddressBase.eAddressCollition.Inside) { string address; if (shift == eShiftTypeDelete.Up) { address = slg.DateAxisRange.DeleteRow(range._fromRow, range.Rows).Address; } else { address = slg.DateAxisRange.DeleteColumn(range._fromCol, range.Columns).Address; } slg.DateAxisRange = address == null? null : range.Worksheet.Cells[address]; } var delSparklines = new List <ExcelSparkline>(); foreach (var sl in slg.Sparklines) { if (range.Collide(sl.Cell.Row, sl.Cell.Column) >= ExcelAddressBase.eAddressCollition.Inside) { delSparklines.Add(sl); } else if (shift == eShiftTypeDelete.Up) { if (effectedAddress.Collide(sl.RangeAddress) >= ExcelAddressBase.eAddressCollition.Inside || range.CollideFullRow(sl.RangeAddress._fromRow, sl.RangeAddress._toRow)) { sl.RangeAddress = sl.RangeAddress.DeleteRow(range._fromRow, range.Rows); } if (sl.Cell.Row >= range._fromRow && sl.Cell.Column >= range._fromCol && sl.Cell.Column <= range._toCol) { sl.Cell = new ExcelCellAddress(sl.Cell.Row - range.Rows, sl.Cell.Column); } } else { if (effectedAddress.Collide(sl.RangeAddress) >= ExcelAddressBase.eAddressCollition.Inside || range.CollideFullColumn(sl.RangeAddress._fromCol, sl.RangeAddress._toCol)) { sl.RangeAddress = sl.RangeAddress.DeleteColumn(range._fromCol, range.Columns); } if (sl.Cell.Column >= range._fromCol && sl.Cell.Row >= range._fromRow && sl.Cell.Row <= range._toRow) { sl.Cell = new ExcelCellAddress(sl.Cell.Row, sl.Cell.Column - range.Columns); } } } delSparklines.ForEach(x => slg.Sparklines.Remove(x)); if (slg.Sparklines.Count == 0) { delSparklineGroups.Add(slg); } } delSparklineGroups.ForEach(x => range.Worksheet.SparklineGroups.Remove(x)); }