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));
+ }
+ }
+ }
+}