ClosedXML AddConditionalFormat() 为 Excel 中的值添加引号(法语)
ClosedXML AddConditionalFormat() adds quotes to value in Excel (French)
所以我正在尝试使用 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,我开始深入研究代码。我发现在保存到有问题的字符串时该值正在更改。
GetQuoted
in XLCFCellIsConverter.cs
在解析我使用的 Double (-98.00002) 时遇到问题。当我的机器处于法国文化时,它无法解析。所以我修改了调用来自:
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;
}
所以我正在尝试使用 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,我开始深入研究代码。我发现在保存到有问题的字符串时该值正在更改。
GetQuoted
in XLCFCellIsConverter.cs
在解析我使用的 Double (-98.00002) 时遇到问题。当我的机器处于法国文化时,它无法解析。所以我修改了调用来自:
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;
}