diff --git a/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML.csproj index 8c12cc2..406116e 100644 --- a/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML.csproj @@ -111,6 +111,7 @@ + diff --git a/ClosedXML/Excel/Style/Colors/XLColor_Static.cs b/ClosedXML/Excel/Style/Colors/XLColor_Static.cs index bfeb90f..3c8ec59 100644 --- a/ClosedXML/Excel/Style/Colors/XLColor_Static.cs +++ b/ClosedXML/Excel/Style/Colors/XLColor_Static.cs @@ -1,7 +1,7 @@ +using ClosedXML.Utils; using System; using System.Collections.Generic; using System.Drawing; -using DocumentFormat.OpenXml.Presentation; namespace ClosedXML.Excel { @@ -28,25 +28,30 @@ { return FromColor(Color.FromArgb(argb)); } + public static XLColor FromArgb(Int32 r, Int32 g, Int32 b) { return FromColor(Color.FromArgb(r, g, b)); } + public static XLColor FromArgb(Int32 a, Int32 r, Int32 g, Int32 b) { return FromColor(Color.FromArgb(a, r, g, b)); } + public static XLColor FromKnownColor(KnownColor color) { return FromColor(Color.FromKnownColor(color)); } + public static XLColor FromName(String name) { return FromColor(Color.FromName(name)); } + public static XLColor FromHtml(String htmlColor) { - return FromColor(ColorTranslator.FromHtml(htmlColor)); + return FromColor(ColorStringParser.ParseFromHtml(htmlColor)); } private static readonly Dictionary ByIndex = new Dictionary(); @@ -113,6 +118,7 @@ } private static Dictionary _indexedColors; + public static Dictionary IndexedColors { get diff --git a/ClosedXML/Excel/XLWorkbook_Load.cs b/ClosedXML/Excel/XLWorkbook_Load.cs index f5de092..d4c90b1 100644 --- a/ClosedXML/Excel/XLWorkbook_Load.cs +++ b/ClosedXML/Excel/XLWorkbook_Load.cs @@ -2442,7 +2442,7 @@ Color thisColor; if (!_colorList.ContainsKey(htmlColor)) { - thisColor = ColorTranslator.FromHtml(htmlColor); + thisColor = ColorStringParser.ParseFromHtml(htmlColor); _colorList.Add(htmlColor, thisColor); } else diff --git a/ClosedXML/Utils/ColorStringParser.cs b/ClosedXML/Utils/ColorStringParser.cs new file mode 100644 index 0000000..60203a1 --- /dev/null +++ b/ClosedXML/Utils/ColorStringParser.cs @@ -0,0 +1,22 @@ +using System.Drawing; +using System.Globalization; + +namespace ClosedXML.Utils +{ + internal static class ColorStringParser + { + public static Color ParseFromHtml(string htmlColor) + { + try + { + return ColorTranslator.FromHtml(htmlColor); + } + catch + { + // https://github.com/ClosedXML/ClosedXML/issues/675 + // When regional settings list separator is # , the standard ColorTranslator.FromHtml fails + return Color.FromArgb(int.Parse(htmlColor.Replace("#", ""), NumberStyles.AllowHexSpecifier)); + } + } + } +}