【发布时间】:2016-06-18 06:03:37
【问题描述】:
我正在尝试找到一种快速更新 Excel 电子表格(C# 互操作)的方法。这是一个 Excel 插件,完全填充后工作表将有大约 20000 行。我目前的流程如下:
- 我订阅了事件服务
- 当我收到第一个事件时,我会处理一个世界状态,我会在其中填充一个数组并快速填充电子表格。这需要几秒钟才能完成,但性能很好。同时,我用一个键和一个包含 Excel 地址和单元格值的类填充字典。
-
我收到的后续事件应被视为更新/插入。这意味着我需要遍历我的字典并查看发生了什么变化(这已经足够快了)。慢的部分是下面的代码,我在循环中获取 Excel 范围并更新更改的值:
Globals.MyAddIn.Application.ScreenUpdating = false; XL.Range add1 = activeWorksheet.get_Range(xlDataPoint.ExcelAddress); xlDataPoint.Value = value.ToString(); add1.Value2 = value; Globals.MyAddIn.Application.ScreenUpdating = true; 由于某些单元格发生变化而其他单元格没有变化 - 我只想更新那些值已更改的单元格。我还需要让工作表响应用户。 如何加快电子表格的更新速度(我怀疑 VBA 或 C# 中的答案是一样的。)?
【问题讨论】:
-
尝试将 screenupdating 调用移到循环之外? (假设从您发布的代码中它们是每个单元格的调用)
-
蒂姆,差别不大,但我可以分配更大的范围,这有帮助
标签: c# excel vba excel-interop excel-addins