之前做這題目時Officec還是舊版,現在大約都是2007以上版本,副檔名格式都不太一樣,所以從頭解說做法


另外之前只有寫入1D陣列的一列資料,這次改成寫入2D陣列的整頁資料


為方便以後修改程式及提升效率,將整個程式拆成多個SubVI,要修改時只針對特定的SubVI修改即可


如何改變儲存格屬性在這一併解說,但沒必要時不建議這麼做。寫入儲存格屬性相當耗時,會拖垮整個程式效能


還有一個最重要的:若電腦安裝的是Excel 2007,請在指定檔案時,副檔名設定為xlsx。當然副檔名也可指定為xls,程式執行也不會出錯,但是用Excel打開檔案時就會多個討厭的對話視窗,按是就可以正常打開檔案

20131216-01  

 


以下範例程式要寫入資料到Excel,同時改變儲存格的文字顏色及背景顏色,儲存格的顏色資料和資料來源的Table相同

20131216-02  

 

20131216-03  

 


整個程式分成幾個SubVI,現在由左向右分開解說

 


第一個SubVI,建立和Excel程式連接的基礎

20131216-04  

 

20131216-05  


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

20131216-06  


2.第2步用Property Node設定是否要開啟Excel程式來打開檔案,由於我不希望每次執行這程式都會自動打開Excel程式,所以在Visible這裡設定為不開啟Excel程式


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

 


第二個SubVI,判斷是開啟現有檔案或新增檔案,判斷的方法使用錯誤控制。因為開啟現有檔案和新增檔案的存檔方式不同,需要送個信號給後面的SubVI

20131216-07  

 

1.用迴圈用判斷是開啟現有檔案或新增檔案,預設用Invoke Node設定要打開的檔案,這裡使用Path元件來指定檔案路徑和檔名,基本上只要Excel程式可以打開的檔案都可以指定。若找不到檔案會產生錯誤,迴圈下一輪會到新增檔案模式

20131216-08  

 

2.新增檔案不需指定檔案路徑和檔名,但在程式最後就需要指定,在後面存檔部分再解說

20131216-09  


3.開啟或新增檔案後同樣用Property Node設定取得Excel程式Sheet(工作表)的控制權

 


第三個SubVI,設定要寫入或新增的工作表

20131216-10  

 

20131216-11  

 

20131216-12  


1.用Invoke Node設定要寫入的工作表。在這裡設定的是工作表的名稱,而不是工作表的順序編號。同時用Boolean元件控制新增工作表的動作,新增工作表後自動指定新工作表為寫入的工作表


2.為了後續處理要將到目前為止的資料轉換成Excel._Worksheet,方法一樣是在Automation Refnum元件上按右鍵,從跳出的選單中選取,再使用Variant To Data元件轉換資料

 


第四個SubVI,實際寫入資料到儲存格,因為寫入2D陣列的整頁資料,所以這裡用雙迴圈處理

20131216-13  

 

20131216-14  

 

1.到上一步為止已完整取得工作表的所有資料,再來就是指定寫入動作。這裡使用雙迴圈分解資料。數值換算成欄位名稱就使用"數值換算成Excel欄位名稱"那篇文章的程式來改造,換算為完整名稱,同時改造為可任意指定工作表其中一個位置的儲存格開始寫入資料

20131216-16  

 

20131216-17  

 

20131216-18  

 

20131212-01  

 

20131216-19  

 

20131216-20  


2.顏色轉換直接使用"LabVIEW和Excel的顏色轉換"那篇文章的程式做成SubVI

20131211-02  


3.指定儲存格Range後再來是設定寫入資料,分別是寫入資料、文字顏色、儲存格顏色

20131216-15  

 


第五個SubVI,是儲存檔案

20131216-21  


1.若是打開現有檔案的模式,就直接Save以打開的檔名存檔。但新增檔案的模式,因為一開始並沒有指定檔名,使用這個方法就會在Excel預設資料夾以Book1.xlsx為檔名存檔

20131216-22  


2.新增檔案的模式要指定檔名存檔就一定要SaveAs另存新檔的方式存檔

20131216-23  

 


最後一個SubVI,是切斷和Excel程式連接

20131216-24  

 

20131216-25  

 


最後看範例程式寫入的結果


範例程式的資料

20131216-26  


寫入的Excel檔案

20131216-27  

arrow
arrow
    文章標籤
    LabVIEW Excel ActiveX
    全站熱搜

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