[VB.NET]OFFICE 2003升級到OFFICE 2010的怪問題~變的非常慢

[VB.NET]OFFICE 2003升級到OFFICE 2010的怪問題~變的非常慢

前陣子客戶將OFFICE 2003升級到OFFICE 2010後,我們的.NET 1.1 Windows Form程式在使用Excel物件時,居然變的非常的慢!

原本以為是因為程式中有使用某些Excel的VBA指令有問題所導致,後來Trace發現,在建立Excel Application物件時,就要花上20幾秒! Code如下,

Dim excelApp as Object = CreateObject("Excel.Application")

 

後來寫一支vbs來測試直接建立Excel Application又很快。

想不透,之間有想過,使用Shell建立Excel後,再取得它的控制權,但時間點又不是那麼的好處理。

Dim xL As Process = Process.Start("excel")
System.Threading.Thread.Sleep(500)
Dim excelApp = Marshal.GetActiveObject("Excel.Application")

 

最後只好用Early Binding的方式(我們的開發環境是Office 2003)加入Office的參考試看看。

Dim excelApp As Application = New ApplicationClass

 

本來怕無法在Office 2010的環境上執行,結果居然是可以的(原本以為會掛掉的說吐舌頭)! 而且建立物件的速度很快!

看了一下組件參考的版本是11.0(Microsoft.Office.Interop.Excel, Version=11.0.0.0),

image

而客戶的版本是Office Pro Plus 2010 version 14.0.6129.5000 (32 bit)。

不過,目前運作起來算是正常了吐舌頭!

 

另外,

1.在VS2010中,加入Office參考,有個屬性「Embed Interop Types」預設是true,就不會把Office的版本號加入到組件的參考之中。

就不用擔心程式引用的Office版本會跟環境的Office版本有不符合的問題吧!

2.蠻奇怪的是,Window Form程式透過CreateObject 建立Excel.Application時,工作管理員中的msiexec.exe的cpu會彪高,不知為何會如此。

如果有任何想法,請跟我分享一下哦! 謝謝!

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^