I appear to have found a bug with the MergeNamedStyles function added recently. Please run the following top-level code (adjusting the file paths as needed) with the attached zipped workbooks as a .NET 9 C# console app
Dev.zip (790.5 KB)
:
using Aspose.Cells;
Workbook targetWbk = new(@"C:\Swift\Templates\Dev\InputCombined_Stoch.xlsx");
var inputSheet = targetWbk.Worksheets["Input"];
if (inputSheet != null)
{
targetWbk.Worksheets.RemoveAt("Input");
}
inputSheet = targetWbk.Worksheets.Insert(0, SheetType.Worksheet, "Input");
var greySheet = targetWbk.Worksheets["Grey"];
if (greySheet != null)
{
targetWbk.Worksheets.RemoveAt("Grey");
}
greySheet = targetWbk.Worksheets.Insert(1, SheetType.Worksheet, "Grey");
var sheet = targetWbk.Worksheets["Map"];
if (sheet != null)
{
targetWbk.Worksheets.RemoveAt("Map");
}
DeleteStyles(targetWbk);
Workbook srcWorkbook = new(@"C:\Swift\Templates\Dev\Input_STRUCTURE.xlsx");
targetWbk.MergeNamedStyles(srcWorkbook);
static void DeleteStyles(Workbook wbk)
{
string[] SWIFT_CUSTOM_STYLES = [
"S_Date",
"S_Date_Custom",
"S_Decimal",
"S_Decimal_Custom",
"S_General",
"S_General_Custom",
"S_Header",
"S_Header_Custom",
"S_IDate",
"S_IDecimal",
"S_INumber",
"S_IPercent",
"S_IText",
"S_Number",
"S_Number_Custom",
"S_ODate",
"S_ODecimal",
"S_ONumber",
"S_OPercent",
"S_OText",
"S_Percent",
"S_Percent_Custom",
"S_xDate",
"S_xDate_Custom",
"S_xDecimal",
"S_xDecimal_Custom",
"S_xGeneral",
"S_xGeneral_Custom",
"S_xNumber",
"S_xNumber_Custom",
"S_xPercent",
"S_xPercent_Custom"
];
var builtInStyles = Enum.GetNames<BuiltinStyleType>();
for (var i = 0; i < wbk.CountOfStylesInPool; i++)
{
var style = wbk.GetStyleInPool(i);
if (!builtInStyles.Contains(style.Name) && !SWIFT_CUSTOM_STYLES.Contains(style.Name))
{
foreach (Worksheet sheet in wbk.Worksheets)
{
for (var r = 0; r <= sheet.Cells.MaxRow; r++)
{
for (var c = 0; c <= sheet.Cells.MaxColumn; c++)
{
Cell cell;
if ((cell = sheet.Cells.CheckCell(r, c)) != null)
{
if (cell.IsStyleSet && cell.SharedStyleIndex == i)
{
cell.SetStyle(wbk.DefaultStyle);
}
}
}
}
}
}
}
wbk.RemoveUnusedStyles();
}