2012-04-02 127 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                                             
    } 
} 
相关问题