[英]How to disable formula error check in Excel programmatically
我尝试通过几个步骤在 C# 中将公式设置为 Excel 单元格,但是在我设置它的过程中,由于公式无效,Excel 似乎抛出了异常。 我想知道如何关闭 C# 中的公式错误检查。 谢谢
编辑公式太长,超过 255 个字符。 所以我不能一步设置公式。 必须设置一个简短的公式,然后替换参见http://netoffice.codeplex.com/discussions/402947
请参阅下面的代码,但我在 rng.Formula = onePart 中遇到错误;
其中Constants.CUT_LENGTH = 253,Constants.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);
}
你可以参考这篇文章
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
可能会有所帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.