2017-06-06 107 views
0

我用下面的代码到一个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; 

是否有不同的方法中检索范围的形式,将其设置到其他范围,可能更快(也秒以内)?

+0

是interop excel?或者是其他东西? –

+1

可能是初步认识到你的问题:https://stackoverflow.com/questions/24029822/excel-range-copy-works-very-slowly/33178551#33178551 –

+0

@DanielTshuva是的,这是互操作的Excel。 – DrNachtschatten

回答

0

因为多层,互操作本来就很慢,但加速格式操作的诀窍是尽可能在一个大块中执行这些操作 - 执行一次格式化,然后使用PasteSpecial将其应用到一个大范围尽可能的细胞。

+0

我认为这就是我所做的,但是有没有办法根据你的意思只复制单元格格式? – DrNachtschatten

+0

很高兴看到更多的代码:我假定iRow是一个循环变量。你关闭了屏幕更新吗? –

+0

在之前的循环中使用了iRow,是的。在这种情况下,它是格式复制目标范围的最后一行。 是的,这大概花了几秒钟,整个过程仍然需要半小时。 – DrNachtschatten

相关问题