gpt4 book ai didi

c# - Excel Interop - 效率和性能

转载 作者:IT王子 更新时间:2023-10-29 03:44:31 27 4
gpt4 key购买 nike

我想知道我可以做些什么来提高 Excel 自动化的性能,因为如果您在工作表中进行大量操作,它可能会非常慢...

以下是我自己发现的一些:

  • ExcelApp.ScreenUpdating = false -- 关闭屏幕重绘

  • ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual -- 关闭计算引擎,以便 Excel 在单元格值更改时不会自动重新计算(在您完成)

  • 减少对 Worksheet.Cells.Item(row, col)Worksheet.Range 的调用——我必须轮询数百个单元格才能找到该单元格我需要。实现一些单元格位置缓存,将执行时间从约 40 秒减少到约 5 秒。

什么样的互操作调用会严重影响性能并且应该避免?您还能做些什么来避免进行不必要的处理?

最佳答案

当使用 C# 或 VB.Net 获取或设置范围时,计算出范围的总大小,然后获取一个大的二维对象数组...

//get values
object[,] objectArray = shtName.get_Range("A1:Z100").Value2;
iFace = Convert.ToInt32(objectArray[1,1]);

//set values
object[,] objectArray = new object[3,1] {{"A"}{"B"}{"C"}};
rngName.Value2 = objectArray;

请注意,了解 Excel 存储的数据类型(文本或数字)很重要,因为当您从对象数组转换回类型时,它不会自动为您执行此操作。如果您无法事先确定数据类型,请在必要时添加测试以验证数据。

关于c# - Excel Interop - 效率和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356371/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com