2017-05-29 167 views
0

我从C#编写函数到Excel文件有问题。从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

可能的重复:https://stackoverflow.com/questions/16400302/excel-worksheet-cellsrow-col-formula-vs-range-set-valuemissing-value-一个 – ASh

+0

我认为我正在使用不同的库,因为我没有metod set_Value Range对象就像你的主题... – Roofy

+0

它是excel.interop?尝试'Value'属性('set_Value'是一个setter) – ASh

回答

1

你要检查什么是真正的内部细胞,当你公式手动输入。 Excel会在编辑栏中显示“= COUNTIF(E5:E20;”D“)”,但是如果您阅读真实内容,您会看到“= COUNTIF(E5:E20,”D“)”< - 请注意逗号而不是分号在公式中。

怎么办? 手动将公式写入单元格,打开VBA编辑器(Alt + F11或Ctrl + G)并输入即时窗口,即? Worksheet.range(“G1”)。公式 - 取决于您输入公式的位置。

如果将根据显示Excel将不扔东西在你的脸上;-)

我想也有逗号>分号问题什么格式公式。编辑: 对不起,工作表是我的本地变量。你必须使用语法:

? ActiveWorkbook.ActiveSheet.range(“G1”)。公式

+0

你是genious的!非常感谢它的工作。问题是用分号“;”=>“,”:) – Roofy