1

我正在使用 Excel-DNA 将公式插入到大约 40k 行 * 10 列中,而且速度很慢。

 XlCall.Excel(XlCall.xlcFormula, myFormula, new ExcelReference(row, row, column, column));

XlCall.Excel(XlCall.xlcCalculation, 3);我设法通过暂时禁用更新(.

我尝试通过object[,]对 xlcFormula 的调用传递一个:

 XlCall.Excel(XlCall.xlcFormula, excelFormulas, new ExcelReference(1, lastRow, columnNumber, columnNumber));

但它将所有公式放入一个字段中(用分号分隔)。有没有办法做我想做的事情,还是我把时间浪费在不可能的事情上?

4

2 回答 2

4

我也遇到了这个麻烦,并想出了另一种加速公式插入的方法。试试这个代码:

var formula = "=1+2";
var reference = new ExcelReference(rowFirst, rowLast, columnFirst, columnLast); // it's а rectangular area, just split up your huge area to smaler ones here
XlCall.Excel(XlCall.xlcFormulaFill, new object[] { formula, reference } ));

当您想将相同的公式插入大量单元格时,此代码非常有用。尝试在公式中使用相对引用。

以前的解决方案也有效:

XlCall.Excel(XlCall.xlcEcho, false)

...但不要忘记不时启用回声。

于 2013-03-26T19:55:51.413 回答
2

您可以尝试关闭屏幕更新XlCall.Excel(XlCall.xlcEcho, false)

使用剪贴板怎么样?您可以将公式(列之间有标签)复制到剪贴板,然后一次性粘贴到 Excel 工作表中。这可能与让 Excel 处理公式字符串一样快。

于 2012-07-02T18:50:25.287 回答