這次的主題是:在LabVIEW中使用ActiveX讀取Excel檔案


在LabVIEW中要讀取Excel檔案有許多方法,NI公司有出一款Report Generation Toolkit的外掛模組以方便LabVIEW用戶使用。但這Toolkit我沒有,再者這Toolkit要另外付費。考量之下還是用ActiveX嘗試做看看


實際試寫程式時問題不少,相關設定找到的參考資料不多,錯誤多次後終於完成可用的程式

20071206-15  

 

 

 

程式的部份分成幾個區塊:

 


1.第1步建立和Excel程式連接的基礎,這裡使用Automation Refnum這個元件來做,把Automation Refnum元件設定為Excel._Application,方法是在Automation Refnum元件上按右鍵,從跳出的選單中選取

 


2.第2步用Property Node設定是否要開啟Excel程式來打開檔案,由於我不希望每次執行這程式都會自動打開Excel程式,所以在Visible這裡設定為不開啟Excel程式。這一步有沒有開啟Excel程式影響到結尾要如何處理,後面的步驟再詳細說明

 


3.第3步同樣用Property Node設定取得Excel程式Workbook(活頁簿)的控制權

20071206-01  

 

20071206-14  

 

 20071206-16  

 

 

4.第4步用Invoke Node設定要打開的檔案,這裡使用Path元件來指定檔案路徑和檔名,基本上只要Excel程式可以打開的檔案都可以指定

20071206-02  

 

 

5.第5步同樣用Property Node設定取得Excel程式Sheet(工作表)的控制權

20071206-03  

 

 

6.第6步用Invoke Node設定要讀取的工作表。在這裡設定的不是工作表的名稱,而是工作表的順序編號,因此號碼的數值是從1開始。若檔案中只有1頁工作表就直接設定為1

20071206-04  

 

 

7.第7步,為了後續處理要將到目前為止的資料轉換成Excel._Worksheet,方法一樣是在Automation Refnum元件上按右鍵,從跳出的選單中選取,再使用Variant To Data元件轉換資料。Variant To Data元件很有意思,在上面Type接腳連上什麼格式的資料轉出來的就是那種格式資料

20071206-05  

 

 

8.第8步,到上一步為止已完整取得工作表的所有資料,再來就是指定讀取範圍。要注意的是若只有指定Cell1則只讀出單格的資料,若Cell1和2都有指定則讀出2D陣列資料(即使Cell1和2指定的是同一縱列還是會讀成2D陣列資料)

20071206-06  

 

 

9.讀出的資料還必須再次轉換成LabVIEW能接受處理的格式,這裡同樣使用Variant To Data元件轉換資料。注意轉換的格式必須和上一步讀出的範圍相同

20071206-07  

 

 

10.切斷Excel程式的控制權,至此完成整個讀取Excel檔案。若在第二步有設定要開啟Excel程式來打開檔案的話,確實是到此結束


但我在第二步時是設定不開啟,於是造成再次執行程式時出現訊息,因為Excel檔案仍在背景執行打開中,要解決這些問題只好再追加程式

20071206-08  

 

 

11.追加的部份重點是重新取得Excel程式控制權,並在背景執行狀態下關閉Excel程式,最後才切斷Excel程式的控制權

20071206-09  

 

20071206-10  

 

20071206-11  

 

 

 

Variant To Data元件轉換資料格式範例

20071206-12  

 

20071206-13  

 

 

 

程式修正後版本,主要是精簡程式,去掉多餘的步驟

 20071206-17  

, ,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 悄悄話

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼