2012-03-11 39 views
2

(串)(我使用C#,但语言不应该的问题。)填写的Excel范围的.Formula与数组

range.Formula = array; 

不会导致错误,但表现完全像

range.Value2 = array; 

:公式看起来像值。当我做F2在单元格上输入,公式得到正确评估。

这是我如何填充数组:

var array = new string[rows, cols]; 
//Fill the array. 
for (long iRow = 0; iRow < rows; iRow++) 
{ 
    for (long iCol = 0; iCol < cols; iCol++) 
    { 
    //Put a counter in the cell. E.g. "=A1+1+100000" 
    array[iRow, iCol] = "=A1+" + (iCol+1) + "+" + (iRow+1) * (rowStep); 
    } 
} 

回答

3

适用于我,如果我使用object[,]而不是string[,]

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – 2013-02-15 15:24:35

+3

我描述的变化解决了问题所在的问题(它导致Excel无需任何进一步操作就可以评估公式)。我想我小心翼翼地回答了我的答案(我只检查它是否解决了这个特定的实例,用我的Excel版本),并且你理解它是说我只是通过这种方式进行编译? – FunctorSalad 2013-02-15 15:32:58

0

不要问我为什么,但是这(第二行)固定它:

range.Formula = array; 
range.Formula = range.Formula; 

不幸的是这需要两倍的时间。有没有更好的方法来避免这种惩罚?

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

+1

正如@FunctorSalad在他的回答中所建议的,将类型改为'object'。如果你这样做,Excel将成功评估'range.Formula = array'。 – Sam 2014-09-30 19:08:18