.net 填写.Formula';带数组(字符串)的Excel范围的

.net 填写.Formula';带数组(字符串)的Excel范围的,.net,excel,.net,Excel,(用C#(尽管语言不重要)) 不会导致错误,但其行为与 range.Value2 = array; :公式看起来像值。只有当我在单元格中输入F2后,它的公式才能正确计算 这是我填充数组的方式: // setup (parameters) int rows = cols = 10; int rowStep = 1000*1000; var array = new string[rows, cols]; // Fill the array. for (long iRow = 1; iRow ==

(用C#(尽管语言不重要))

不会导致错误,但其行为与

range.Value2 = array;
:公式看起来像值。只有当我在单元格中输入F2后,它的公式才能正确计算

这是我填充数组的方式:

// setup (parameters)
int rows = cols = 10;
int rowStep = 1000*1000;
var array = new string[rows, cols];
// Fill the array.
for (long iRow = 1; iRow == rows; iRow++)
{
  for (long iCol = 1; iCol == cols; iCol++)
  {
    // Put a count in the cell.  E.g. "=A1+1+1000000"
    array[iRow-1, iCol-1] = "=A1+" + iCol + "+" + (iRow * rowStep);
  }
}

别问我为什么,但这(第二行)解决了这个问题:

range.Formula = array;
range.Formula = range.Formula;
不幸的是,这需要两倍的时间。有没有更好的办法避免这种处罚


上面的解决方案是通过post通知的。

如果我使用
对象[,]
而不是
字符串[,]

这并不能回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论。我所描述的更改解决了问题所在的问题(它导致Excel评估公式,而无需采取任何进一步行动)。我猜我的回答措辞过于谨慎(我只是用我的Excel版本检查了它是否解决了这个特定的实例),而你的理解是我只是这样编译的?正如@FunctorSalad在他的回答中所建议的,将类型更改为
object
。如果执行此操作,Excel将成功计算
range.Formula=array
range.Formula = array;
range.Formula = range.Formula;