2012-04-02 71 views
0

我目前使用TCOM來處理使用TCL的excel。我有2個Excel表單文件。我需要做的是比較兩個文件的差異,並在txt文件/ excel中列出它們。 我想知道兩個excel文件之間的這種比較是否可以使用tcl/tcom完成。有沒有辦法將兩個excel表單文件與tcl進行比較?

+1

應儘可能(我將讓別人說說您如何;我不是在合適的操作系統上我自己測試它的時刻)。但我認爲Excel這些天來與一個內置的電子表格比較工具... – 2012-04-02 09:01:26

+0

你介意出口到CSV? – MerreM 2012-05-23 13:22:53

回答

0

如果你在linux環境下工作,你可以使用一些bash命令來幫助你。

我認爲快速處理數據的最好方法是通過csv文件。你可以使用:

exec sort sheet1.csv 
exec sort sheet2.csv 
set diff [diff sheet1.csv sheet2.csv] 

編輯,因爲這不是一個純粹的Tcl:

比方說,雙方的CSV文件看起來是這樣的: sheet1.csv - > A,B,C,d myTclFile sheet1.csv sheet2.csv

您的Tcl裏面你可以閱讀: - sheet2.csv>一,d,C,E

您可以將它們作爲參數傳遞給你的Tcl文件中加載這些文件使用argv

set list1 [lindex $argv 0] 
set list2 [lindex $argv 1] 

在調用它們之前檢查輸入文件是一種很好的做法。 如果文件的順序不重要,但只有它們具有相同數據的事實,則可以使用lsort。儘管如此,爲了把它變成元素的實際列表,而不是一個大串的使用分裂

set list1 [split $list1 ','] 
set list2 [split $list2 ','] 

然後你就可以在這些名單迭代你想要的方式。我的建議是使用foreach。這將去或多或少像這樣(exempla如果你想遍歷整個列表)

foreach element $list1 { 
    foreach element2 $list2 { 
     set hasMatch 0 
     if {$element == $element2} { 
      incr hasMatch 
      break 
     } else { 
      continue 
     } 
    } 
    if {!$hasMatch} { 
     set diff [lappend $diff $element] 
    } else { 
     continue                                             
    } 
} 
相關問題