【问题标题】:How to disable formula error check in Excel programmatically如何以编程方式在 Excel 中禁用公式错误检查
【发布时间】:2012-11-16 16:56:09
【问题描述】:

我尝试通过几个步骤将公式设置为 C# 中的 Excel 单元格,但是在我设置它的过程中,Excel 似乎由于公式无效而引发异常。我想知道如何关闭 C# 中的公式错误检查。谢谢

编辑 公式太长,超过 255 个字符。 所以我不能一步设置公式。 必须设置一个简短的公式,然后替换见http://netoffice.codeplex.com/discussions/402947

见下面的代码 但我在 rng.Formula = onePart; 中得到一个错误;

其中常量.CUT_LENGTH = 253,常量.MAX_FORMULA_LENGTH = 255,分隔符 =“||” 我尝试将 EvaluateToError 设置为 false,仍然出现错误

                XLApp.ErrorCheckingOptions.InconsistentFormula = false;
                XLApp.ErrorCheckingOptions.EvaluateToError = false;

                SetFormula(rangeFunction, formula);  


    public static void SetFormula(Range rng, string origFormula)
    {
        int i = 0;
        foreach (var onePart in CutStringIntoSubstrings(origFormula))
        {                
            if(i==0)
            {
                rng.Formula = onePart;
                i++;
            }
            else
            {
                rng.Replace(Constants.Separator, onePart);
            }
        }
    }
    public static IEnumerable<string> CutStringIntoSubstrings(string origFormula)
    {
        if (origFormula == null) yield return string.Empty;
        if (string.IsNullOrEmpty(origFormula)) yield return string.Empty;
        if (origFormula.Length <= Constants.MAX_FORMULA_LENGTH) yield return origFormula;

        int startIdx = 0;
        int endIdx = startIdx + Constants.CUT_LENGTH;
        while(endIdx < origFormula.Length)
        {
            var substr = origFormula.Substring(startIdx, Constants.CUT_LENGTH);
            if(startIdx + Constants.CUT_LENGTH < origFormula.Length)
            {
                substr += Constants.Separator;
            }
            yield return substr;
            startIdx += Constants.CUT_LENGTH;
            endIdx = startIdx + Constants.CUT_LENGTH;
        }
        if (startIdx < origFormula.Length) yield return origFormula.Substring(startIdx);
    }

【问题讨论】:

  • 为什么不先建立公式,然后设置到单元格中呢?你能显示一些代码吗?
  • 好的,我现在明白了。我假设您使用的是 Excel 2003,因为我可以毫无问题地在 Excel 2007 中设置很长的公式。也许你的公式可以做得更小?或者如果做不到这一点,是否可以在一个单元格中计算其中的一部分,然后在另一个单元格的公式的其余部分中使用结果?

标签: c# excel formula


【解决方案1】:

你可以参考这篇文章

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.errorcheckingoptions_members.aspx http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.error.ignore(v=office.11​​).aspx

可能会有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2014-06-06
    • 2019-08-01
    相关资源
    最近更新 更多