Есть ли способ сравнить два файла Excel лист с Tcl? - PullRequest
0 голосов
/ 02 апреля 2012

В настоящее время я использую TCOM для работы в Excel с использованием TCL.У меня есть 2 файла Excel.Что мне нужно сделать, это сравнить два файла на предмет различий и перечислить их в текстовом файле / Excel.Я хотел бы знать, можно ли выполнить это сравнение между двумя файлами Excel с помощью tcl / tcom.

1 Ответ

0 голосов
/ 05 ноября 2014

Если вы работаете в среде 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 -> a, 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                                                                                                                                                                                 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...