有没有办法比较两个excel表文件与tcl?

时间:2012-04-02 06:38:40

标签: excel tcl

我目前正在使用TCOM使用TCL处理excel。我有2个excel表文件。我需要做的是比较两个文件的差异,并在txt文件/ excel中列出它们。 我想知道两个excel文件之间的比较是否可以使用tcl / tcom完成。

1 个答案:

答案 0 :(得分: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 sheet2.csv - >一个,d,C,E

您可以通过将它们作为参数传递到Tcl文件来加载这些文件: myTclFile sheet1.csv sheet2.csv

在您的Tcl中,您可以使用argv

阅读它们
set list1 [lindex $argv 0]
set list2 [lindex $argv 1]

最好在调用输入文件之前检查输入文件。 如果文件的顺序不重要,但只有它们具有相同数据的事实,您可以使用lsort。尽管如此,为了将其转换为实际的元素列表,而不是使用一个大字符串 split

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

然后你可以按照你想要的方式迭代这些列表。我的建议是使用 foreach 。这或多或少会像这样(如果你想迭代整个列表,则为示例)

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                                                                                                                                                                                 
    }
}