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();

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

多亏了@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;
    }