diff --git a/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML.csproj
index b17bde2..f89efcf 100644
--- a/ClosedXML/ClosedXML.csproj
+++ b/ClosedXML/ClosedXML.csproj
@@ -50,6 +50,9 @@
..\packages\DocumentFormat.OpenXml.2.7.2\lib\net40\DocumentFormat.OpenXml.dll
True
+
+ ..\packages\ExcelNumberFormat.1.0.2\lib\net20\ExcelNumberFormat.dll
+
..\packages\FastMember.Signed.1.1.0\lib\net40\FastMember.Signed.dll
True
@@ -99,6 +102,7 @@
+
diff --git a/ClosedXML/Excel/Cells/XLCell.cs b/ClosedXML/Excel/Cells/XLCell.cs
index 39e00c1..bab7ff5 100644
--- a/ClosedXML/Excel/Cells/XLCell.cs
+++ b/ClosedXML/Excel/Cells/XLCell.cs
@@ -320,36 +320,36 @@
cValue = _cellValue;
}
+ var format = GetFormat();
+
if (_dataType == XLDataType.Boolean)
- return (cValue != "0").ToString();
- if (_dataType == XLDataType.TimeSpan)
- return cValue;
- if (_dataType == XLDataType.DateTime || IsDateFormat())
+ return (cValue != "0").ToExcelFormat(format);
+
+ else if (_dataType == XLDataType.TimeSpan || _dataType == XLDataType.DateTime || IsDateFormat())
{
double dTest;
if (Double.TryParse(cValue, XLHelper.NumberStyle, XLHelper.ParseCulture, out dTest)
&& dTest.IsValidOADateNumber())
{
- var format = GetFormat();
- return DateTime.FromOADate(dTest).ToString(format);
+ return DateTime.FromOADate(dTest).ToExcelFormat(format);
}
return cValue;
}
- if (_dataType == XLDataType.Number)
+ else if (_dataType == XLDataType.Number)
{
double dTest;
if (Double.TryParse(cValue, XLHelper.NumberStyle, XLHelper.ParseCulture, out dTest))
{
- var format = GetFormat();
- return dTest.ToString(format);
+ return dTest.ToExcelFormat(format);
}
return cValue;
}
- return cValue;
+ else
+ return cValue;
}
public object Value
diff --git a/ClosedXML/Extensions/FormatExtensions.cs b/ClosedXML/Extensions/FormatExtensions.cs
new file mode 100644
index 0000000..4a183bb
--- /dev/null
+++ b/ClosedXML/Extensions/FormatExtensions.cs
@@ -0,0 +1,17 @@
+using ExcelNumberFormat;
+using System.Globalization;
+
+namespace ClosedXML.Extensions
+{
+ internal static class FormatExtensions
+ {
+ public static string ToExcelFormat(this object o, string format)
+ {
+ var nf = new NumberFormat(format);
+ if (!nf.IsValid)
+ return format;
+
+ return nf.Format(o, CultureInfo.InvariantCulture);
+ }
+ }
+}
diff --git a/ClosedXML/packages.config b/ClosedXML/packages.config
index bed0dd7..0eee0fc 100644
--- a/ClosedXML/packages.config
+++ b/ClosedXML/packages.config
@@ -1,5 +1,6 @@
+
\ No newline at end of file