Комментарии 16
TortoiseSvn умеет сравнивать excel файлы по-ячейкам, кроме того, если используется только эксель и все-таки нужно написать скрипт, то уместнее написать скрипт на VBA чем на питоне.
По моему проще допилить эксельку, чем городить такой огород.
Там же есть много прекрасных функций перевода текста в диапазоны.
Ну или просто использовать сводные таблицы
Есть же у Excel Надстройка Inquire, в ней есть команда Сравнить файлы.
https://support.microsoft.com/en-us/office/compare-workbooks-using-spreadsheet-inquire-ebaf3d62-2af5-4cb1-af7d-e958cc5fad42
Причем для офиса 2013 и новее можно можно не подключать COM-надстройку, а запускать как отдельное приложение
[ WIN+S ]: Spreadsheet Compare
PowerQuery
Самое смешное, что в excel есть встроенный механизм сравнения 2х версий документа.
Но, в последнее время, людям проще написать скрипт на питон, чем выучить инструмент в котором они работают.
А потом выясняется, что и порядок столбцов, и порядок строк разные, и на самом деле задача вообще не такая, какую решает стандартное средство сравнения таблиц в Excel.
В общем, мне кажется автор просто ввел всех в заблуждение, недостаточно четко описав задачу. И стандартное средство тут похоже не применимо совсем.
Какие предложения от excel ?
с 2013 версии там это делается в power query в пяток кликов.
Оба варианта работают и в принципе лучше ковыряния в excell мышкой . Есть и третий вариант ещё более простой - выгнать данные в csv файлы, их прочитать в структуру словаря, собрать ключи в 2 множества и собрать результирующий csv. Над множествами python умеет выполнять арифметические операции.
Операции чтения-записи не прибавят скорости,
— прогон в csv сам по себе может поселить ошибки, например, если имеются столбцы с пробелами в содержимом,
— при сборе в словари надо учесть, что меняться могут не только ключи, но и значения.
А при вычитании множеств надо иметь в виду, что вычитать придется так же(как и в задаче) дважды, т.к. множества могут оказаться неоднородными (количество ключей-значений может быть разным).
Да и на выходе из csv собирать затем excel таблицу?
Строки с пробелами выгоняются как раз нормально. Проверено на довольно больших таблицах.
При сборе с в словари, нужно представлять характер данных. Если существует главный ключ, то вообще задача заметно упрощается. При загрузке в словарь как раз можно и проверить на повторение ключей. Можно и типы полей при этом проверить. На всё - про всё примерно строк 20-40 кода.
Вычитание действительно придётся выполнять как минимум дважды, для того чтобы проверить расхождение по ключам.
Сравнение содержимого полей придётся выполнять в любом случае, независимо от способа обработки.
Результирующую таблицу ( или несколько, если необходимы отчёты по плохим записям) можно тоже) в csv вывести. Ну или сразу в Excel.
Вообще, подобные задачи(анализ корректности данных) считаются довольно сложными и, конечно, Excel для подобных задач подходит плохо.
Можно скачать надстройку для Excel - нужно открыть два листа и нажать кнопку - она сама поймёт что сравнивать https://www.youtube.com/watch?v=J4ligSxRFxs
Сравнить две таблицы excel