【发布时间】:2010-09-26 06:18:20
【问题描述】:
我想知道我可以做些什么来提高 Excel 自动化的性能,因为如果您在工作表中有很多事情要做,它可能会很慢...
以下是我自己发现的一些:
ExcelApp.ScreenUpdating = false-- 关闭屏幕重绘ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual-- 关闭计算引擎,以便 Excel 在单元格值更改时不会自动重新计算(完成后重新打开)减少对
Worksheet.Cells.Item(row, col)和Worksheet.Range的调用——我必须轮询数百个单元格才能找到我需要的单元格。实施一些单元格位置缓存,将执行时间从约 40 秒减少到约 5 秒。
什么样的互操作调用会严重影响性能并且应该避免?您还能做些什么来避免进行不必要的处理?
【问题讨论】:
-
+1 我在使用 Excel Interop 时也遇到了性能问题,而且我学到了一些新东西:
ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual。谢谢! =) -
感谢您在问题中分享您当前的发现,非常有用。
-
这里有一些其他可能的选项stackoverflow.com/documentation/excel-vba/1107/…
标签: c# excel performance interop vsto