ClosedXML AddConditionalFormat()将引号添加到Excel(法语)中的值中
本文关键字:Excel 法语 AddConditionalFormat ClosedXML 添加 | 更新日期: 2023-09-27 18:25:35
所以我正在尝试使用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,我开始深入研究代码。我发现在保存到有问题的字符串时,该值正在更改。
XLCFCellIsConverter.cs
中的GetQuoted
在解析我使用的Double(-98000002)时遇到问题。当我的机器处于法国文化时期时,它无法解析。所以我修改了来自的呼叫
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;
}