复制Excel单元格的格式到范围很慢
我用下面的代码到一个Excel的行格式(模板行)复制到一系列数据填充行,但它得到令人难以置信的慢有更多的行(电流测试约33000线作为目标范围)。复制Excel单元格的格式到范围很慢
线放慢整个过程Range.PasteSpecial(...);
,没有行会需要几秒钟,它需要几分钟。
range = worksheet.Range[worksheet.Cells[9, 1], worksheet.Cells[9, 44]];
range.Copy();
range = worksheet.Range[worksheet.Cells[10, 1], worksheet.Cells[iRow + 8, 44]];
range.PasteSpecial(XlPasteType.xlPasteFormats, XlPasteSpecialOperation.xlPasteSpecialOperationNone, false, false);
excel.CutCopyMode = 0;
是否有不同的方法中检索范围的形式,将其设置到其他范围,可能更快(也秒以内)?
因为多层,互操作本来就很慢,但加速格式操作的诀窍是尽可能在一个大块中执行这些操作 - 执行一次格式化,然后使用PasteSpecial将其应用到一个大范围尽可能的细胞。
我认为这就是我所做的,但是有没有办法根据你的意思只复制单元格格式? – DrNachtschatten
很高兴看到更多的代码:我假定iRow是一个循环变量。你关闭了屏幕更新吗? –
在之前的循环中使用了iRow,是的。在这种情况下,它是格式复制目标范围的最后一行。 是的,这大概花了几秒钟,整个过程仍然需要半小时。 – DrNachtschatten
是interop excel?或者是其他东西? –
可能是初步认识到你的问题:https://stackoverflow.com/questions/24029822/excel-range-copy-works-very-slowly/33178551#33178551 –
@DanielTshuva是的,这是互操作的Excel。 – DrNachtschatten