У нас есть много электронных таблиц (xls) в нашем хранилище исходного кода. Они обычно редактируются с помощью gnumeric или openoffice.org и в основном используются для заполнения баз данных для модульного тестирования с помощью dbUnit . Я не знаю простых способов создания различий в файлах xls, и это делает объединение чрезвычайно утомительным и подверженным ошибкам.
Я пытался конвертировать электронные таблицы в xml и делать регулярные сравнения, но мне кажется, что это должно быть последнее средство.
Я хотел бы выполнить сравнение (и слияние), git
как я это делаю с текстовыми файлами. Как бы я это сделал, например, при выдаче git diff
?
git diff
иgitk
Ответы:
Мы столкнулись с точно такой же проблемой в нашей компании. Наши тесты показывают превосходные рабочие тетради. Бинарный дифференциал не был вариантом. Таким образом, мы развернули наш собственный простой инструмент командной строки. Проверьте проект ExcelCompare . Фактически это позволяет нам довольно хорошо автоматизировать наши тесты. Запросы патчей / функций приветствуются!
источник
Быстро и легко без внешних инструментов, работает хорошо, если сравнивать два листа:
=if(Sheet1!A1 <> Sheet2!A1, "X", "")
в верхнюю левую ячейку (или эквивалент: нажмите на фактические ячейки, чтобы автоматически вставить ссылки в формулу)Если листы похожи, эта таблица будет пустой, за исключением нескольких ячеек с X, подчеркивающих различия. Увеличьте масштаб до 40%, чтобы быстро увидеть, что отличается.
источник
=Sheet1!A1=Sheet2!A1
. Это напечатает ИСТИНА или ЛОЖЬ. Затем вы можете сделать условное форматирование=countif(A1:B2, FALSE)
или что-то подобное.Я много сравнивал книги Excel в прошлом. Моя методика очень хорошо работает для рабочих книг со многими рабочими листами, но она сравнивает только содержимое ячеек, а не форматирование ячеек, макросы и т. Д. Кроме того, требуется некоторое кодирование, но оно того стоит, если вам приходится многократно сравнивать большое количество больших файлов. Вот как это работает:
A) Напишите простую программу дампа, которая просматривает все таблицы и сохраняет все данные в разделенных табуляцией файлах. Создайте один файл для каждого листа (используйте имя листа в качестве имени файла, например, «MyWorksheet.tsv») и создайте новую папку для этих файлов при каждом запуске программы. Назовите папку после имени файла Excel и добавьте метку времени, например, «20080922-065412-MyExcelFile». Я сделал это в Java, используя библиотеку под названием JExcelAPI . Это действительно довольно легко.
B) Добавьте расширение оболочки Windows, чтобы запустить новую программу Java с шага A, если щелкнуть правой кнопкой мыши файл Excel. Это позволяет очень легко запустить эту программу. Вам нужно Google, как это сделать, но это так же просто, как написать файл * .reg.
C) Получить BeyondCompare . Он имеет очень классную функцию для сравнения данных с разделителями, показывая их в красивой таблице, см. Скриншот .
D) Теперь вы можете легко сравнивать файлы Excel. Щелкните правой кнопкой мыши файл Excel 1 и запустите программу дампа. Это создаст папку с одним файлом на листе. Щелкните правой кнопкой мыши файл Excel 2 и запустите программу дампа. Это создаст вторую папку с одним файлом на листе. Теперь используйте BeyondCompare (BC) для сравнения папок. Каждый файл представляет собой рабочий лист, поэтому, если в рабочем листе есть различия, BC покажет это, и вы сможете выполнить детализацию и сравнить файлы. BC покажет сравнение в хорошем макете таблицы, и вы можете скрыть строки и столбцы, которые вам не интересны.
источник
Вы можете попробовать этот бесплатный онлайн-инструмент - www.cloudyexcel.com/compare-excel/
Он дает хороший визуальный вывод в режиме онлайн с точки зрения добавления, удаления, изменения строк и т. Д.
Кроме того, вам не нужно ничего устанавливать.
источник
Я нашел xdocdiff плагин WinMerge . Это плагин для WinMerge (как OpenSource, так и Freeware , вам не нужно ни писать VBA, ни сохранять Excel в CSV или XML). Это работает только для Celd's содержит.
Этот плагин также поддерживает:
С уважением, Андрес
источник
Хммм. В меню Excel выберите Окно -> Сравнить рядом?
источник
Используете ли вы TortoiseSVN для коммитов и обновлений в Subversion? Он имеет инструмент сравнения, однако сравнение файлов Excel по-прежнему не очень удобно для пользователя. В моей среде (Win XP, Office 2007) он открывает два файла Excel для сравнения друг с другом.
Щелкните правой кнопкой мыши документ> SVN Tortoise> Показать журнал> выберите редакцию> щелкните правой кнопкой мыши «Сравнить с рабочей копией».
источник
Более новые версии MS Office поставляются с Spreadsheet Compare , который выполняет довольно приятную разницу в графическом интерфейсе. Он обнаруживает большинство видов изменений.
источник
diff
объединением на основе командной строки , этот инструмент сравнения электронных таблиц идеально подошел для моих целей (проверка различий между выводом автоматизации OpenXML и выводом автоматизации COM COM).Существует библиотека daff (сокращение от diff для данных), которая помогает сравнивать таблицы, создавать сводку их различий и использовать такую сводку в качестве файла исправления.
Он написан на Haxe, поэтому его можно скомпилировать на основных языках.
Я сделал Excel Diff Tool в Javascript с помощью этой библиотеки. Он хорошо работает с числами и небольшими строками, но вывод не идеален для длинных строк (например, длинное предложение с небольшим изменением символов).
источник
Я знаю, что в нескольких ответах предлагалось экспортировать файл в csv или другой текстовый формат, а затем сравнивать их. Я не видел, чтобы это упоминалось специально, но Beyond Compare 3 имеет ряд дополнительных форматов файлов, которые он поддерживает. Смотрите Дополнительные форматы файлов . Используя один из форматов файлов Microsoft Excel, вы можете легко сравнить два файла Excel, не проходя экспорт в другой формат.
источник
Я бы использовал формат файла SYLK, если важно выполнить diff. Это текстовый формат, который должен сделать сравнения проще и компактнее, чем двоичный формат. Он также совместим с Excel, Gnumeric и OpenOffice.org, поэтому все три инструмента должны хорошо работать вместе. SYLK Статья в Википедии
источник
Используйте Altova DiffDog
Используйте XML-режим diffdog и Grid View, чтобы просмотреть различия в удобном для чтения табличном формате. Различия в текстах намного сложнее для электронных таблиц любой сложности. С этим инструментом, по крайней мере, два метода являются жизнеспособными при различных обстоятельствах.
Сохранить как .xml
Чтобы обнаружить отличия простой электронной таблицы на один лист, сохраните электронные таблицы Excel для сравнения в виде электронной таблицы XML 2003 с расширением .xml.
Сохранить как .xlsx
Чтобы обнаружить различия большинства электронных таблиц в модульной модели документов, сохраните электронные таблицы Excel для сравнения в виде рабочей книги Excel в формате .xlsx. Откройте файлы для сравнения с diffdog. Он сообщает вам, что файл является ZIP-архивом, и спрашивает, хотите ли вы открыть его для сравнения каталогов. Согласившись на сравнение каталогов, достаточно просто дважды щелкнуть логические части документа для их сравнения (в режиме XML diff). Большинство частей документа .xslx представляют собой данные в формате XML. Вид сетки чрезвычайно полезен. Различать отдельные листы тривиально, чтобы сосредоточить анализ на областях, которые, как известно, изменились.
Склонность Excel к настройке имен определенных атрибутов при каждом сохранении раздражает, но возможности diffdog по анализу XML включают возможность фильтрации определенных видов различий. Например, электронные таблицы Excel в форме XML содержат
row
иc
элементы, имеющиеs
атрибуты (стиль), которые переименовываются при каждом сохранении. Настройка подобного фильтраc:s
значительно упрощает просмотр только изменений содержимого.У diffdog есть много возможностей диффузии. Я перечислил режимы различий в XML только потому, что не использовал другой инструмент, который мне больше нравился, когда дело доходит до различий в документах Excel.
источник
Я нашел макрос openoffice здесь, который будет вызывать функцию сравнения документов openoffice для двух файлов. К сожалению, сравнение электронных таблиц openoffice кажется немного странным; Я только что с помощью кнопки «Отклонить все» вставил лишний столбец в свой документ.
источник
Плагин xdocdiff для SVN
источник
Если вы используете Java, вы можете попробовать simple-excel .
Он будет обрабатывать электронные таблицы с использованием сопоставителей Hamcrest и выводить что-то вроде этого.
Я должен уточнить, что мы написали этот инструмент (как галочка ответ свернул свое собственное).
источник
Если у вас есть TortoiseSVN, вы можете CTRLщелкнуть два файла, чтобы выбрать их в проводнике Windows, а затем щелкнуть правой кнопкой мыши TortoiseSVN-> Diff.
Это особенно хорошо работает, если вы ищете небольшое изменение в большом наборе данных.
источник
У меня такая же проблема, как и у вас, поэтому я решил написать небольшой инструмент, чтобы помочь мне. Пожалуйста, проверьте ExcelDiff_Tools . Это идет с несколькими ключевыми моментами:
источник
Я являюсь соавтором бесплатного расширения Git с открытым исходным кодом:
https://github.com/ZoomerAnalytics/git-xltrail
Это позволяет Git работать с любым форматом файла книги Excel без каких-либо обходных путей.
источник
Diff Doc может быть то, что вы ищете.
источник
Я не знаю ни одного инструмента, но на ум приходят два решения по принципу «сделай сам», оба требуют Excel:
Вы можете написать некоторый код VBA, который просматривает каждую рабочую таблицу, строку, столбец и ячейку двух рабочих книг, сообщая о различиях.
Если вы используете Excel 2007, вы можете сохранить рабочие книги в формате Open-XML (* .xlsx), извлечь XML-файл и проверить его. Файл Open-XML - это, по сути, просто ZIP-файл с XML-файлами и манифестами.
В любом случае у вас будет много «шума», если ваши таблицы не являются структурно «близкими» для начала.
источник
Конвертируйте в cvs, затем загружайте в систему управления версиями, затем diff с помощью расширенного инструмента сравнения версий. Когда я использовал перформанс, у него был отличный инструмент сравнения, но я забыл его название.
источник