What's the problem? I test with the following sample code and don't find any problem:
Dim count As Integer = 0
Dim range As Range
Do While count < 5
Dim excel As Excel = New Excel()
Dim style = excel.DefaultStyle
Dim sheets As Worksheets = excel.Worksheets
style.Font.Name = "Arial Narrow"
excel.DefaultStyle = style
Dim cells As Cells = excel.Worksheets(0).Cells
Dim cell As Cell = cells(0, 0)
Dim style1 As Style = excel.Styles(excel.Styles.Add())
Dim style2 As Style = excel.Styles(excel.Styles.Add())
Dim style3 As Style = excel.Styles(excel.Styles.Add())
excel.ChangePalette(Color.Navy, 55)
style2.Font.Name = "Arial Narrow"
style2.Font.Color = Color.White
style2.Font.IsBold = True
style2.ForegroundColor = Color.Navy
style2.BackgroundColor = Color.Navy
style2.Pattern = BackgroundType.Solid
style2.HorizontalAlignment = TextAlignmentType.Center
range = sheets(0).Cells.CreateRange(0, 2, 2, 3)
Range.Style = style2
range = sheets(0).Cells.CreateRange(0, 10, 2, 3)
range.Style = style2
style1.Font.Name = "Arial Narrow"
style1.Font.Size = 9
style1.Custom = "#,##0;[Red]-#,##0"
range = sheets(0).Cells.CreateRange(0, 0, 1, 22)
range.Style = style1
excel.Save("d:\test\abc" + count.ToString() + ".xls")
count = count + 1
Loop
I think your problem may be caused by:
1. The Navy color is not added into the palette.
excel.ChangePalette(Color.Navy, 55)
2. style2 setting is overwritten by style1
And please try this attached fix. I add some new features and enhancement in it.