diff --git a/main/SS/UserModel/IndexedColors.cs b/main/SS/UserModel/IndexedColors.cs index e1a9517a3..d5c36cf18 100644 --- a/main/SS/UserModel/IndexedColors.cs +++ b/main/SS/UserModel/IndexedColors.cs @@ -250,6 +250,15 @@ static IndexedColors() mappingIndex.Add(63, IndexedColors.Grey80Percent); mappingIndex.Add(64, IndexedColors.Automatic); } + + public static IndexedColors TryValueOf(int index) + { + if (mappingIndex.ContainsKey(index)) + return mappingIndex[index]; + + return null; + } + public static IndexedColors ValueOf(string colorName) { if (mappingName.ContainsKey(colorName.ToLower())) @@ -257,11 +266,15 @@ public static IndexedColors ValueOf(string colorName) return null; } + public static IndexedColors ValueOf(int index) { - if(mappingIndex.ContainsKey(index)) - return mappingIndex[index]; - throw new ArgumentException("Illegal IndexedColor index: " + index); + var indexedColors = TryValueOf(index); + + if(indexedColors == null) + throw new ArgumentException("Illegal IndexedColor index: " + index); + + return indexedColors; } /** diff --git a/ooxml/SS/Converter/ExcelToHtmlConverter.cs b/ooxml/SS/Converter/ExcelToHtmlConverter.cs index a6d50d9de..7a99af9c7 100644 --- a/ooxml/SS/Converter/ExcelToHtmlConverter.cs +++ b/ooxml/SS/Converter/ExcelToHtmlConverter.cs @@ -682,7 +682,7 @@ protected String BuildStyle(IWorkbook workbook, ICellStyle cellStyle) else if (cellStyle.FillPattern == FillPattern.SolidForeground) { //cellStyle - IndexedColors clr=IndexedColors.ValueOf(cellStyle.FillForegroundColor); + IndexedColors clr=IndexedColors.TryValueOf(cellStyle.FillForegroundColor); string hexstring=null; if(clr!=null) { @@ -698,7 +698,7 @@ protected String BuildStyle(IWorkbook workbook, ICellStyle cellStyle) } else { - IndexedColors clr = IndexedColors.ValueOf(cellStyle.FillBackgroundColor); + IndexedColors clr = IndexedColors.TryValueOf(cellStyle.FillBackgroundColor); string hexstring = null; if (clr != null) { @@ -752,7 +752,7 @@ private void BuildStyle_Border(IWorkbook workbook, StringBuilder style, } else { - IndexedColors clr = IndexedColors.ValueOf(borderColor); + IndexedColors clr = IndexedColors.TryValueOf(borderColor); if (clr != null) { borderStyle.Append(' '); @@ -803,7 +803,7 @@ void BuildStyle_Font(IWorkbook workbook, StringBuilder style, } else { - IndexedColors clr = IndexedColors.ValueOf(font.Color); + IndexedColors clr = IndexedColors.TryValueOf(font.Color); string hexstring = null; if (clr != null) { diff --git a/testcases/ooxml/SS/Converter/TestExcelToHtmlConverterSuite.cs b/testcases/ooxml/SS/Converter/TestExcelToHtmlConverterSuite.cs index 91c607418..32aa38531 100644 --- a/testcases/ooxml/SS/Converter/TestExcelToHtmlConverterSuite.cs +++ b/testcases/ooxml/SS/Converter/TestExcelToHtmlConverterSuite.cs @@ -1,5 +1,6 @@ using NPOI.HSSF.UserModel; using NPOI.SS.Converter; +using NPOI.XSSF.UserModel; using NUnit.Framework; using System; using System.Collections.Generic; @@ -63,10 +64,36 @@ public void TestExcelToHtmlConverter() private void Test(string fileName) { HSSFWorkbook workbook; - workbook = ExcelToHtmlUtils.LoadXls(fileName); - ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(); - excelToHtmlConverter.ProcessWorkbook(workbook); - excelToHtmlConverter.Document.Save(Path.ChangeExtension(fileName, "html")); ; + workbook = ExcelToHtmlUtils.LoadXls(fileName); + ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(); + excelToHtmlConverter.ProcessWorkbook(workbook); + excelToHtmlConverter.Document.Save(Path.ChangeExtension(fileName, "html")); ; + } + + [Test] + public void TestExcelToHtmlConverterWithBackground() + { + var fi = new FileInfo(@"..\..\..\..\test-data\spreadsheet\background_color.xlsx"); + string fileName = fi.FullName; + + XSSFWorkbook workbook; + FileStream inputStream = File.Open(fileName, FileMode.Open); + try + { + workbook = new XSSFWorkbook(inputStream); + } + finally + { + if (inputStream != null) + inputStream.Close(); + + inputStream = null; + } + + ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter(); + excelToHtmlConverter.ProcessWorkbook(workbook); + excelToHtmlConverter.Document.Save(Path.ChangeExtension(fileName, "html")); + } } } diff --git a/testcases/test-data/spreadsheet/background_color.xlsx b/testcases/test-data/spreadsheet/background_color.xlsx new file mode 100644 index 000000000..d12af1893 Binary files /dev/null and b/testcases/test-data/spreadsheet/background_color.xlsx differ