2017-06-06 108 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

相關問題