Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion src/EPPlus/Core/ChangableDictionary.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,15 @@ internal T this[int key]

internal virtual void InsertAndShift(int fromPosition, int add)
{
if (_count == 0) return;
var pos = Array.BinarySearch(_index[0], 0, _count, fromPosition);

if (pos < 0)
{
pos = ~pos;
}

if (_count >= _index[0].Length - 1)
if (_count >= _index[0].Length-1)
{
Array.Resize(ref _index[0], _index[0].Length << 1);
Array.Resize(ref _index[1], _index[1].Length << 1);
Expand All @@ -83,6 +84,23 @@ internal virtual void InsertAndShift(int fromPosition, int add)
}
Version++;
}
internal virtual void Shift(int fromPosition, int add)
{
if (_count == 0) return;
var pos = Array.BinarySearch(_index[0], 0, _count, fromPosition);

if (pos < 0)
{
pos = ~pos;
}
if (pos >= _count) return;

for (int i = pos; i < Count; i++)
{
_index[0][i] += add;
}
Version++;
}

internal int Count { get { return _count; } }
/// <summary>
Expand Down
3 changes: 3 additions & 0 deletions src/EPPlus/Core/Worksheet/WorksheetRangeInsertHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -706,6 +706,9 @@ private static void AdjustColumns(ExcelWorksheet ws, int columnFrom, int columns
}
}

//Shift column indexes from columnFrom
ws.ColumnLookup.Shift(columnFrom, columns);

for (int i = lst.Count - 1; i >= 0; i--)
{
var c = lst[i];
Expand Down
34 changes: 21 additions & 13 deletions src/EPPlus/Drawing/ExcelDrawing.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Date Author Change
using OfficeOpenXml.Drawing.Controls;
using OfficeOpenXml.Drawing.OleObject;
using OfficeOpenXml.Drawing.Slicer;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using OfficeOpenXml.Packaging;
using OfficeOpenXml.Utils.Drawings;
using OfficeOpenXml.Utils.EnumUtils;
Expand Down Expand Up @@ -344,18 +345,7 @@ public virtual string Name
// All uniqueness checks successfully passed! Safe to update name-lookup dictionaries.
UpdateNameInDictionaries(oldName, value);
}

SetXmlNodeString(_nvPrPath + "/@name", value);
if (this is ExcelSlicer<ExcelTableSlicerCache> ts)
{
SetXmlNodeString(_nvPrPath + "/../../a:graphic/a:graphicData/sle:slicer/@name", value);
ts.SlicerName = value;
}
else if (this is ExcelSlicer<ExcelPivotTableSlicerCache> pts)
{
SetXmlNodeString(_nvPrPath + "/../../a:graphic/a:graphicData/sle:slicer/@name", value);
pts.SlicerName = value;
}
SetName(value);
}
catch (ArgumentException)
{
Expand All @@ -367,6 +357,20 @@ public virtual string Name
}
}
}
internal void SetName(string name)
{
SetXmlNodeString(_nvPrPath + "/@name", name);
if (this is ExcelSlicer<ExcelTableSlicerCache> ts)
{
SetXmlNodeString(_nvPrPath + "/../../a:graphic/a:graphicData/sle:slicer/@name", name);
ts.SlicerName = name;
}
else if (this is ExcelSlicer<ExcelPivotTableSlicerCache> pts)
{
SetXmlNodeString(_nvPrPath + "/../../a:graphic/a:graphicData/sle:slicer/@name", name);
pts.SlicerName = name;
}
}


/// <summary>
Expand Down Expand Up @@ -1719,6 +1723,10 @@ public void UnGroup(bool ungroupThisItemOnly = true)
}
else
{
foreach (var item in _parent.Drawings)
{
_drawings.AddDrawingInternal(item);
}
_parent.Drawings.Clear();
}
if (prevParent.Drawings.Count <= 0)
Expand Down Expand Up @@ -2485,7 +2493,7 @@ private XmlNode CopyShape(ExcelChartStandard targetChart, bool isGroupShape = fa
drawNode.InnerXml = TopNode.InnerXml;
var targetShape = GetDrawing(targetChart.Drawings._drawings, drawNode, DrawingsCollectionType.Chart) as ExcelShape;
targetShape.Id = ++targetChart.Drawings._nextDrawingId;
targetShape.Name = targetChart.Drawings.GetUniqueDrawingName(this.Name);
targetShape.SetName(targetChart.Drawings.GetUniqueDrawingName(this.Name));
}
return drawNode;
}
Expand Down
1 change: 1 addition & 0 deletions src/EPPlus/Drawing/ExcelDrawings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ internal string GetUniqueDrawingName(string name)
{
var newName = name;
var index = 1;

while (_drawingNames.ContainsKey(newName))
{
var split = newName.Split(' ');
Expand Down
2 changes: 2 additions & 0 deletions src/EPPlus/Drawing/ExcelShape.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Date Author Change
*************************************************************************************************
01/27/2020 EPPlus Software AB Initial release EPPlus 5
*************************************************************************************************/
using System;
using System.Text;
using System.Xml;
using OfficeOpenXml.Drawing.Interfaces;
Expand Down Expand Up @@ -89,5 +90,6 @@ internal override void DeleteMe()
}
base.DeleteMe();
}

}
}
2 changes: 1 addition & 1 deletion src/EPPlus/ExcelWorksheet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2275,7 +2275,7 @@ public void InsertColumn(int columnFrom, int columns)
public void InsertColumn(int columnFrom, int columns, int copyStylesFromColumn)
{
WorksheetRangeInsertHelper.InsertColumn(this, columnFrom, columns, copyStylesFromColumn);
ColumnLookup.InsertAndShift(columnFrom, columns);
//ColumnLookup.InsertAndShift(columnFrom, columns);
}
#endregion
#region DeleteRow
Expand Down
Loading