数式をいくつかの手順で C# の Excel セルに設定しようとしましたが、設定したプロセス中に、無効な数式のために Excel が例外をスローしたようです。C# で数式エラー チェックを無効にするにはどうすればよいでしょうか。ありがとう
編集 数式が長すぎます。255 文字を超えています。そのため、数式を 1 ステップで設定することはできません。短い式を設定してから、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);
}