【问题标题】:Fill the .Formula's of an Excel Range with an array (of strings)用数组(字符串)填充 Excel 范围的 .Formula
【发布时间】:2018-09-02 17:38:13
【问题描述】:

(在 C# 中(尽管语言无关紧要))

range.Formula = array;

不会导致错误,但行为完全一样

range.Value2 = array;

:公式看起来像值。只有在我对一个单元格执行 F2, Enter 之后,它的公式才会被正确评估。

这就是我填充数组的方式:

// 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);
  }
}

【问题讨论】:

    标签: .net excel


    【解决方案1】:

    如果我使用 object[,] 而不是 string[,],对我有用。

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 我描述的更改解决了问题所在(它导致 Excel 在没有任何进一步操作的情况下评估公式)。我想我的回答措辞过于谨慎(我只用我的 Excel 版本检查了它是否解决了这个特定的实例),你理解它是说我只是让它以这种方式编译?
    【解决方案2】:

    不要问我为什么,但这(第二行)解决了它:

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

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

    上面的解决方案是this发帖告知的。

    【讨论】:

    • 正如@FunctorSalad 在他的回答中所建议的,将类型更改为object。如果这样做,Excel 将成功评估 range.Formula = array
    猜你喜欢
    • 2019-01-16
    • 1970-01-01
    • 2016-06-28
    • 2017-06-29
    • 2016-07-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多