将C#中的函数写入Excel文件时遇到问题。
private void AddDemandFunctions()
{
Func<string, string, string> function = (range, shift) =>
{
var builder = new StringBuilder();
builder.Append("=LICZ.JEŻELI(");
builder.Append(range);
builder.Append("; \"");
builder.Append(shift);
builder.Append("\")");
return builder.ToString();
};
int startRow = 5;
int endRow = 20;
string [] columns = { "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM" };
foreach (var column in columns)
{
string range = column + startRow + ":" + column + endRow;
worksheet.Range[column + 21].Formula = function(range, "D"); // HERE I GET AN EXCEPTION RIGHT IN MY FACE :(
worksheet.Range[column + 22].Formula = function(range, "E");
worksheet.Range[column + 23].Formula = function(range, "L");
worksheet.Range[column + 24].Formula = function(range, "N");
}
}
例外是:
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll
Additional information: Wyjątek od HRESULT: 0x800A03EC.
我的Excel(2010)是波兰语版本。当我尝试删除“=”时,它可以工作,但它只写入文本。然后,如果我在excel文件中添加“=”,一切正常。函数字符串里面没有错误。
我也试过非抛光功能:COUNTIF
我也有同样的例外......
有什么想法吗?
来自PL的问候:)
答案 0 :(得分:1)
手动输入公式时,您必须检查单元格内部的内容。 Excel显示&#34; = COUNTIF(E5:E20;&#34; D&#34;)&#34;在公式栏中,但如果您阅读真实内容,您将看到&#34; = COUNTIF(E5:E20,&#34; D&#34;)&#34; &lt; - 请注意逗号而不是分号中的分号。
怎么做? 手动将公式写入单元格,打开VBA编辑器(Alt + F11或Ctrl + G)并输入立即窗口即? Worksheet.range(&#34; G1&#34;)。公式 - 取决于你当然输入公式的位置。
如果您根据显示的内容格式化您的公式,则不会在您的脸上抛出任何东西; - )
我想还有逗号和分号问题。
编辑: 抱歉,工作表是我的本地变量。你必须使用语法:
? ActiveWorkbook.ActiveSheet.range(&#34; G1&#34)。式