使用tcom控制Excel

jearmy發表於2012-05-26

最近因為工作的關係需要分析Excel工作表的內容,一直在考慮要用VBA好還是用Tcl+tcom好,掙紮了好久最後還是選了Tcl+tcom,採用這種方法是因為....我是Tcl的熱愛者!!哈~。接下來的內容是操作Excel時常遇到的問題,我把它們都部落格下來給大家參考。[@more@]

E08.1 開啟Excel檔案並取得控制儲存格的COM物件

用tcom開啟Excel檔案是很容易的一件事,慣用的程式片段如下:

 
set excel [::tcom::ref createobj Excel.Application]
$excel Visible 1
 
set workbooks [$excel Workbooks]
set workbook [$workbooks Open "要開啟的Excel檔案"]

當開啟成功,下一步通常是要取得Sheet1 ~ SheetX 的COM物件參考 :

 
set worksheets [$workbook Worksheets]
    
set sheet1 [$worksheets Item [expr 1]]
set sheet2 [$worksheets Item [expr 2]]

取得了工作表的COM物件參考後,接下來只要再取得每個工作表的「儲存格集合」的COM物件參考, 就可以隨心所欲的操控每一個儲存格了,程式片斷如下 :

 
set cells1 [$sheet1 Cells]
set cells2 [$sheet2 Cells]

E08.2 設定及取得指定儲存格的資料

在開始之前,我們要先知道Excel的儲存格中「顯示的資料」及「原始的資料」很有可能是不一樣的,時常「顯示的資料」是「原始的資料」經過格式化的結果,如果說你要取出某個儲存格中原始的資料,可以這麼做 :

 
set R [expr 1]
set C "A"
set R1C1 [[$cells1 Item $R $C] Value]

上面的程式中cells1 Item 後面可以給兩個引數,分別用來指定儲存格集合中的第「R」列,第「C」行,當命令執行成功後,會回傳對應儲存格的COM物件參考。我們透過儲存格物件的Value屬性把值取出來。

如果你要取出的是格式化後的內容,也就是顯示在儲存格上的內容,要改用Text屬性,像這樣 :

 
puts [[$cells1 Item $R $C] Text]

如果你想要的是設定儲存格的內容,可以這樣做 :

 
$cells1 Item $R $C  "要設定給儲存格的值"

E08.3 變更儲存格的背景/前景顏色

如果要更改儲存格的背景顏色,則需要使用到儲存格Interior屬性的COM物件參考,使用的方法如下:

 
set interior [[$cell1 Item $R $C] Interior]
   
$interior Color [expr 0x0000FF]

上面的例子透過Interior物件把儲存格的背景設為紅色(0xBBGGRR)。 若要改變的是前景顏色,也就是文字的顏色要改用Font屬性的COM物件參考,範例如下 :

 
set fnt [[$cell1 Item $R $C] Font]
   
$fnt Color [expr 0xFF0000]
$fnt Bold [expr 1]

上面的例子把文字的顏色設定為藍色,也順道把文字設定為粗體了。 其它常用的功能還有,儲存格文字對齊的功能,像這樣把文字水平及垂直都置中 :

 
[$cells1 Item $R $C] HorizontalAlignment [expr -4108]
[$cells1 Item $R $C] VerticalAlignment  [expr -4108]

如果不瞭解上面的設定值,不要緊 ~ 請自己看看就知道了!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/459749/viewspace-1058351/,如需轉載,請註明出處,否則將追究法律責任。

相關文章