在C#函数中设置Excel单元格的公式

本文关键字:单元格 Excel 设置 函数 | 更新日期: 2023-09-27 18:19:30

我为Excel创建了一个自动化外接程序,实现为C#类库,其中包含一个UDF包装器。(我不使用VSTO)

我想在我的UDF中做的是:

1> 获取输入公式的单元格地址;

2> 将那个单元格的公式设置为我自己的公式;

我已经做了如下第1>点:

  Microsoft.Office.Interop.Excel.Application excelApp = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");
  Microsoft.Office.Interop.Excel.Range target = (Microsoft.Office.Interop.Excel.Range)excelApp.get_Caller(System.Type.Missing);
  string cellAddress = target.get_Address(Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, Missing.Value, Missing.Value);
  //Perform some operations based on address
  //Assign a formula to my cell (This does not work !)
  target.Formula ="=SUM(2,2)"

这应该根据MSDN文档中的内容进行操作。

我做错了什么?有没有其他方法可以设置单元格的公式?

谢谢,

在C#函数中设置Excel单元格的公式

UDF只能向其调用单元格返回值,不允许覆盖自己的公式(或更改任何其他单元格的内容)。您需要创建一个命令来执行此操作。

'=SUM(2,2)'与'2+2'相同;

如果要添加单元格,例如"A1"answers"A4",则应使用以下格式"=SUM(A1,A4)"

或者要将单元格从"A1"添加到"A4",可以使用"=SUM(A1:A4)"。

或整列'B','=SUM(B:B)'。

尝试此目标.set_Value(RangeValueDataType:Type.Missing,Value:"=SUM(2,2)");