diff --git a/ClosedXML/Excel/Cells/XLCell.cs b/ClosedXML/Excel/Cells/XLCell.cs index 2029f97..8255203 100644 --- a/ClosedXML/Excel/Cells/XLCell.cs +++ b/ClosedXML/Excel/Cells/XLCell.cs @@ -965,9 +965,17 @@ } else if (value == XLDataType.Number) { + var v = _cellValue; double dTest; - if (Double.TryParse(_cellValue, XLHelper.NumberStyle, CultureInfo.InvariantCulture, out dTest)) - _cellValue = dTest.ToInvariantString(); + double factor = 1.0; + if (v.EndsWith("%")) + { + v = v.Substring(0, v.Length - 1); + factor = 1 / 100.0; + } + + if (Double.TryParse(v, XLHelper.NumberStyle, CultureInfo.InvariantCulture, out dTest)) + _cellValue = (dTest * factor).ToInvariantString(); else { throw new ArgumentException( diff --git a/ClosedXML_Examples/Misc/DataTypes.cs b/ClosedXML_Examples/Misc/DataTypes.cs index 0e2e356..e642a7f 100644 --- a/ClosedXML_Examples/Misc/DataTypes.cs +++ b/ClosedXML_Examples/Misc/DataTypes.cs @@ -150,6 +150,11 @@ ws.Cell(ro, co + 1).Value = "'123.45"; ws.Cell(ro, co + 1).DataType = XLDataType.Number; + ws.Cell(++ro, co).Value = "Percentage Text to Number:"; + ws.Cell(ro, co + 1).Value = "'55.12%"; + ws.Cell(ro, co + 1).Style.NumberFormat.SetNumberFormatId((int)XLPredefinedFormat.Number.PercentPrecision2); + ws.Cell(ro, co + 1).DataType = XLDataType.Number; + ws.Cell(++ro, co).Value = "@ format to Number:"; ws.Cell(ro, co + 1).Style.NumberFormat.Format = "@"; ws.Cell(ro, co + 1).Value = 123.45; diff --git a/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx b/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx index f33318d..cab157a 100644 --- a/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx +++ b/ClosedXML_Tests/Resource/Examples/Misc/DataTypes.xlsx Binary files differ diff --git a/ClosedXML_Tests/Resource/Examples/Misc/DataTypesUnderDifferentCulture.xlsx b/ClosedXML_Tests/Resource/Examples/Misc/DataTypesUnderDifferentCulture.xlsx index f3bf2bf..2b49926 100644 --- a/ClosedXML_Tests/Resource/Examples/Misc/DataTypesUnderDifferentCulture.xlsx +++ b/ClosedXML_Tests/Resource/Examples/Misc/DataTypesUnderDifferentCulture.xlsx Binary files differ