Excel Add-in的program运行时经常会遇到No responding。 原因可能是low-Addin 引起的。那么问题来了,如何让我们的程序跑的快点呢?
常见优化的三个思考方向:
1. 代码逻辑优化(一般大家的思考逻辑都是差不多的,可能只有大神才能有质的改变)
2. 改变访问Excel的方式(效果显著, OLEDB, EPPLUS, COM等等)
3. 减少访问次数
当项目处于后期时,1和2可能已经固定下来了。 下面讨论如何减少访问次数以及读写分离(类似于数据库的主从分离思想,- -!)
思路来源:点击打开链接
Public Class labReduceAccess
'Desc: Fetch info from ws1,ws2 and ws3. Put the processed data into ws3
'Author: ZhenYang Cheng
'Date: 01/23/2015
'Input:
'Output:
Shared Sub process()
Dim ws_Lab1 As New Microsoft.Office.Interop.Excel.Worksheet
Dim ws_Lab2 As New Microsoft.Office.Interop.Excel.Worksheet
Dim ws_Lab3 As New Microsoft.Office.Interop.Excel.Worksheet
Dim ws_number As Integer
If GlobalDataAndFunction.Instance().IsWorksheetExists(Singleton.Instance().Application, "ws_Lab1") Then
ws_number = GlobalDataAndFunction.Instance().GetWorksheetNo(Singleton.Instance().Application, "ws_Lab1")
ws_Lab1 = Singleton.Instance().Application.Worksheets(ws_number)
End If
If GlobalDataAndFunction.Instance().IsWorksheetExists(Singleton.Instance().Application, "ws_Lab2") Then
ws_number = GlobalDataAndFunction.Instance().GetWorksheetNo(Singleton.Instance().Application, "ws_Lab2")
ws_Lab2 = Singleton.Instance().Applicatio