【问题标题】:Writing functions in Excel from C#从 C# 在 Excel 中编写函数
【发布时间】:2017-05-30 14:57:55
【问题描述】:

我在将函数从 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.

My Excel(2010) 是波兰语版本。当我尝试删除“=”时,它可以工作,但它只写文本。然后,如果我在 excel 文件中添加“=”,一切正常。函数字符串里面没有错。

我也尝试了非抛光功能:COUNTIF,我也有同样的例外......

有什么想法吗?

来自 PL 的问候 :)

【问题讨论】:

  • 我认为我使用的是不同的库,因为我没有像你的主题那样在 Range 对象上设置 set_Value 方法...
  • 是 excel.interop 吗?试试Value 属性(set_Value 是二传手)
  • 是的。值也不起作用-同样的例外:(

标签: c# excel function


【解决方案1】:

当您手动输入公式时,您必须检查单元格内的内容。 Excel 在公式栏中显示“=COUNTIF(E5:E20; "D")",但如果您阅读真实内容,您会在此处看到 "=COUNTIF(E5:E20, "D")"

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

如果您将根据显示的内容格式化您的公式,excel 不会在您的脸上丢任何东西;-)

我想还有逗号->分号问题。

编辑: 抱歉工作表是我的局部变量。你必须使用语法:

? ActiveWorkbook.ActiveSheet.range("G1").Formula

【讨论】:

  • 你真是个天才!非常感谢它的工作原理。问题在于分号“;” => "," :)
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多