我使用Excel-DNA在大约40k行* 10列中插入公式,速度相当慢。
XlCall.Excel(XlCall.xlcFormula, myFormula, new ExcelReference(row, row, column, column));我设法通过暂时禁用更新时重新计算单元格(XlCall.Excel(XlCall.xlcCalculation, 3);)来显著改进它,但理想情况下,我希望找到一种方法,在一次操作中将整列公式放入excel中(我假设这将提高速度)。
我尝试在调用xlcFormula时传递一个object[,]:
XlCall.Excel(XlCall.xlcFormula, excelFormulas, new ExcelReference(1, lastRow, columnNumber, columnNumber));但它将所有公式放在一个字段中(用分号分隔)。有没有办法做我想做的事情,或者我是在浪费我的时间在不可能的事情上?
发布于 2012-07-03 02:50:25
你可以在屏幕更新中尝试一下,同时关闭XlCall.Excel(XlCall.xlcEcho, false)。
使用剪贴板怎么样?您可以将公式(列之间带有制表符)复制到剪贴板,然后将所有公式一次性粘贴到Excel工作表中。这可能是让Excel处理公式字符串的最快速度。
发布于 2013-03-27 03:55:51
我也遇到了这个问题,并想出了另一种加速公式插入的方法。尝试以下代码:
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)..。但不要忘记时不时地启用echo。
https://stackoverflow.com/questions/11294811
复制相似问题