ClosedXML AddConditionalFormat()将引号添加到Excel中的值(法语)

所以我正在尝试使用ClosedXML。 我一直使用它,直到我遇到本地化。 条件格式化适用于英语,意大利语和德语版本的Windows。 这不是法文。

当区域设置为法语时, AddConditionalFormat().WhenEqualOrLessThan()方法无法正常工作。 它为条件语句添加引号。 当我在Excel中打开它时,我得到了规则:

Cell Value <= "-98.00002"

它应该是:

Cell Value <= -98.00002

我用其他语言运行它,它没有任何问题。

 ws.Range(r, 1, r, 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.General; // G3 compatibility ws.Cell(r, 2).AddConditionalFormat().WhenEqualOrLessThan(-98.00002f) .Font.SetFontColor(XLColor.LightGray); ws.SheetView.FreezeRows(2); ws.Columns().AdjustToContents(); 

感谢@Jeeped,我开始深入研究代码。 我发现这个值在保存到正在讨论的string的时候正在改变。

GetQuotedXLCFCellIsConverter.csparsing我使用的Double(-98.00002)时遇到了麻烦。 当我的机器在法国文化,它不能parsing。 所以我修改了来自:

  private String GetQuoted(XLFormula formula) { String value = formula.Value; Double num; if ((!Double.TryParse(value, out num) && !formula.IsFormula) && value[0] != '\"' && !value.EndsWith("\"")) return String.Format("\"{0}\"", value.Replace("\"", "\"\"")); return value; } 

至:

  private String GetQuoted(XLFormula formula) { String value = formula.Value; Double num; if ((!Double.TryParse(value, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out num) && !formula.IsFormula) && value[0] != '\"' && !value.EndsWith("\"")) return String.Format("\"{0}\"", value.Replace("\"", "\"\"")); return value; }