2008-09-22 4 views
155

У нас есть большое количество таблиц (xls) в нашем репозитории исходного кода. Обычно они редактируются с помощью gnumeric или openoffice.org и в основном используются для заполнения баз данных для модульного тестирования с помощью dbUnit. Нет простых способов сделать diff на файлы xls, о которых я знаю, и это делает слияние чрезвычайно утомительным и подверженным ошибкам.Как создать читаемый diff двух электронных таблиц с использованием git diff?

Я попытался преобразовать электронные таблицы в xml и сделать регулярный diff, но он действительно чувствует, что это должно быть последним средством.

Я хотел бы выполнить различное (и слияние) с git так же, как с текстовыми файлами. Как бы это сделать, например? при выпуске git diff?

+4

Я думаю, что теги unit-testing и dbunit неправильно применяются здесь. Речь идет о сопоставлении файлов для определенного формата файла и не имеет ничего общего с модульным тестированием. – 2008-09-23 07:29:29

+1

Не ответ (для этого нужен Excel & является коммерческим продуктом), но для людей, привезенных сюда GooBinghoo - http://www.formulasoft.com/excel-compare.html работает хорошо для меня. – 2014-08-21 22:12:28

+1

Я использую этот скрипт Python для разграничения Excel, который мы регистрируем в git. Я портировал этот код GO (который был перенесен с Perl) на Python: https://github.com/tokuhirom/git-xlsx-textconv#see-also Он позволяет использовать `git diff` и` gitk` – nmz787 2015-10-02 21:52:47

ответ

96

Мы столкнулись с той же проблемой в нашей компании. Наши результаты тестов превосходят книги. Двоичная разность не была вариантом. Поэтому мы выкатили собственный простой инструмент командной строки. Проверьте ExcelCompare project. Infact это позволяет нам легко автоматизировать наши тесты. Патчи/Запросы функций приветствуются!

0

Diff Doc Возможно, вы ищете то, что ищете.

  • Сравнить документы MS Word (DOC, DOCX и т.д.), Excel, PDF, Rich Text (RTF), текст, HTML, XML, PowerPoint или Wordperfect и сохранить форматирование
  • Выберите любую часть любой файл (файл) и сравнить его с любой частью того же или другого документа (файла).
+1

Diff Doc - это только окна и закрытый источник, это действительно не соответствует моим потребностям. – neu242 2008-09-22 13:01:25

0

Я не знаю каких-либо инструментов, но есть два рулона своего собственного решения, которые приходят на ум, как требуется Excel:

  1. Вы могли бы написать несколько VBA код, шаги по каждому листу, строке, столбцу и ячейке двух книг, сообщая о различиях.

  2. Если вы используете Excel 2007, вы можете сохранить книги как формат Open-XML (* .xlsx), извлечь XML и diff. Файл Open-XML по существу представляет собой только файл .zip .xml-файлов и манифестов.

В любом случае вы получите много «шума», если ваши таблицы не будут структурно «близки» для начала.

+0

В Excel 2002 вы также можете сохранить в формате XML Spreadsheet, который проще, чем иметь дело с файлами xlsx. – 2009-05-25 13:16:48

5

Вы используете TortoiseSVN для выполнения своих обязательств и обновлений в подрывной деятельности? У него есть инструмент diff, однако сравнение файлов Excel по-прежнему не очень удобно. В моей среде (Win XP, Office 2007) он открывает два файла excel для сравнения по бокам.

Щелкните правой кнопкой мыши документ> Tortoise SVN> Показать журнал> выберите версию> щелкните правой кнопкой мыши для «Сравнить с рабочей копией».

1

Я бы использовал формат файла SYLK, если важно выполнять различия. Это текстовый формат, который должен сделать сравнения проще и компактнее, чем двоичный формат. Он также совместим с Excel, Gnumeric и OpenOffice.org, поэтому все три инструмента должны хорошо работать вместе. SYLK Wikipedia Article

106

Быстро и легко без внешних инструментов, хорошо работает до тех пор, как два листа вы сравниваете похожи:

  • Создайте третью таблицу
  • Тип =if(Sheet1!A1 <> Sheet2!A1, "X", "") в верхней левой ячейке (или эквивалент: нажмите на фактические ячейки, чтобы автоматически добавить ссылки в формулу)
  • Ctrl + C (копия), Ctrl + A (выберите все), Ctrl + V (вставить), чтобы заполнить лист.

Если листы похожи, эта таблица будет пустой, за исключением нескольких ячеек с X в них, выделяя различия. Unzoom до 40%, чтобы быстро увидеть, что другое.

+0

Я искал stackoverflow для решения этого вопроса, я использую в основном числовые данные, поэтому я делаю вычитание, чтобы увидеть разницу. И условное форматирование для установки красного цвета для уменьшенных и синих для увеличения. То, что я ищу, - это простой способ справиться с нечисловыми кодами, смешанными с числами. – tovare 2010-06-09 07:03:43

+6

Разве это не клеточное сравнение клеток? Я имею в виду, что если у левой стороны есть одна дополнительная строка сверху, она даст все остальные строки (и ячейки) разными. Если это так, это не очень полезно. – 2011-11-16 14:12:13

+1

@ Thecrocodilehunter: вы всегда можете удалить эту строку сверху, а затем сравнить остальные. Если различия намного сложнее, то, конечно, вам нужен другой инструмент. Это полезно для быстрых одноразовых сравнений, например, когда Excel говорит, что вы изменили электронную таблицу, и вы боитесь, что вы случайно отредактировали поле. – iconoclast 2012-10-16 19:00:54

12

В прошлом я много сравнивал книги Excel. Моя техника очень хорошо работает для книг со многими рабочими листами, но она сравнивает только содержимое ячеек, а не форматирование ячеек, макросы и т. Д. Кроме того, есть некоторая кодировка, но это стоит того, если вам приходится много раз сравнивать множество больших файлов. Вот как это работает:

A) Напишите простую программу дампа, которая проходит через все листы и сохраняет все данные в файлы, разделенные табуляцией. Создайте один файл на листе (используйте имя рабочего листа в качестве имени файла, например «MyWorksheet.tsv»), и создайте новую папку для этих файлов каждый раз при запуске программы. Назовите папку после имени файла excel и добавьте временную метку, например. "20080922-065412-MyExcelFile". Я сделал это на Java, используя библиотеку под названием JExcelAPI. Это очень легко.

B) Добавьте расширение оболочки Windows, чтобы запустить новую программу Java с шага A при щелчке правой кнопкой мыши по файлу Excel. Это облегчает запуск этой программы. Вам нужно, чтобы Google сделал это, но это так же просто, как написать файл .reg.

C) Получить BeyondCompare. Он имеет очень интересную функцию для сравнения данных с разделителями, показав их в хорошей таблице, see screenshot.

D) Теперь вы можете легко сравнивать файлы Excel. Щелкните правой кнопкой мыши файл Excel 1 и запустите программу дампа. Он создаст папку с одним файлом на рабочий лист. Щелкните правой кнопкой мыши файл Excel 2 и запустите программу дампа. Он создаст вторую папку с одним файлом на рабочий лист. Теперь используйте BeyondCompare (BC) для сравнения папок. Каждый файл представляет собой рабочий лист, поэтому, если есть различия в листе, BC покажет это, и вы можете развернуть и выполнить сравнение файлов. BC покажет сравнение в красивой таблице, и вы можете скрыть строки и столбцы, которые вас не интересуют.

6

Хммм. В меню Excel выберите «Окно» -> «Сравнить рядом»?

1

Я нашел макрос openoffice here, который будет ссылаться на функцию документов openoffice для сравнения двух файлов. К сожалению, сравнение электронных таблиц openoffice кажется немного шелушащимся; Я просто нажал кнопку «Отклонить все», чтобы добавить лишний столбец в свой документ.

9

Я нашел xdocdiff WinMerge Plugin. Это плагин для WinMerge (и OpenSource и Freeware, вам не нужно писать VBA и не сохранять excel в csv или xml). Он работает только для celd's contains.

Этот плагин также поддерживает:

  • .rtf Rich Text
  • .docx/.docm Microsoft WORD 2007 (OOXML)
  • .xlsx/.xlsm Microsoft Excel 2007 (OOXML)
  • .pptx/.pptm Microsoft PowerPoint 2007 (OOXML)
  • .doc Microsoft WORD ver5.0/95/97/2000/XP/2003
  • .xls Microsoft Excel ver5.0/95/97/2000/XP/2003
  • .ppt Microsoft PowerPoint 97/2000/XP/2003
  • .sxw/.sxc/.sxi/.sxd OpenOffice.org
  • .odt/.ods/.odp/.odg Open Document
  • .wj2/wj3/WK3/WK4/123 Лотос 123
  • .wri Windows3.1 Написать
  • .pdf Adobe PDF
  • .mht Web Archive
  • .EML экспортируемые файлы из OutlookExpress

Regard, Andres

0

Конвертировать в cvs затем загрузить в систему управления версиями, а затем развернуть с помощью расширенного средства контроля версий. Когда я использовал perforce, у него был отличный инструмент diff, но я забыл его имя.

3

Я знаю несколько ответов предложили экспортировать файл в формате CSV или какой-либо другой текстовый формат, а затем сравнивая их. Я не видел, чтобы это упоминалось специально, но Beyond Compare 3 имеет ряд дополнительных форматов файлов, которые он поддерживает. См. Additional File Formats. Используя один из форматов файлов Microsoft Excel, вы можете легко сравнить два файла Excel, не переходя через опцию экспорта в другой формат.

1

Если вы используете Java, вы можете попробовать simple-excel.

Это будет таблица diff с использованием Hamcrest-матчей и вывести что-то вроде этого.

java.lang.AssertionError: 
Expected: entire workbook to be equal 
    but: cell at "C14" contained <"bananas"> expected <nothing>, 
      cell at "C15" contained <"1,850,000 EUR"> expected <"1,850,000.00 EUR">, 
      cell at "D16" contained <nothing> expected <"Tue Sep 04 06:30:00"> 
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) 

Должен быть квалифицирован тот факт, что мы написали этот инструмент (например, тикаемый ответ развернулся).

2

Использование Altova DiffDog

режим XML Diff Используйте DiffDog и Grid View, чтобы просмотреть различия в легко читаемом табличном формате. Текстовое разграничение - это MHCH HARDER для таблиц любой сложности. С помощью этого инструмента по крайней мере два метода жизнеспособны при различных обстоятельствах.

  1. Сохранить как.xml

    Чтобы обнаружить различия в простой электронной таблице с одним листом, сохраните таблицы Excel, чтобы сравнить их с таблицей XML Spreadsheet 2003 с расширением .xml.

  2. Сохранить как .xlsx

    Для выявления различий в большинстве электронных таблиц в модульной модели документа, за исключением таблиц Excel для сравнения как книги Excel в .xlsx формы. Откройте файлы для diff с помощью diffdog. Он сообщает вам, что файл является ZIP-архивом и спрашивает, хотите ли вы открыть его для сравнения каталогов. Соглашаясь на сопоставление каталогов, становится относительно простым делом двойного щелчка по логическим частям документа для их разграничения (с режимом XML diff). Большинство частей документа .xslx являются данными в формате XML. Grid View чрезвычайно полезен. Тривиально различать отдельные листы, чтобы сфокусировать анализ на областях, которые, как известно, изменились.

Склонность Excel, чтобы настроить определенные имена атрибутов с каждым сохранить это раздражает, но XML diff'ing возможности DiffDog включают возможность фильтровать определенные виды различий. Например, таблицы Excel в форме XML содержат row и c элементы, которые имеют атрибуты (стиль) s, которые переименовываются при каждом сохранении. Настройка фильтра, такого как c:s, упрощает просмотр только изменений содержимого.

diffdog обладает большой разницей. Я перечислил режимы XML diff только потому, что я не использовал другой инструмент, который мне больше понравился, когда речь заходила о разграничении документов Excel.

1

Если у вас есть TortoiseSVN, то вы можете CTRL щелкните два файла, чтобы выбрать их в Проводнике Windows, а затем щелкните правой кнопкой мыши, TortoiseSVN-> Diff.

Это работает особенно хорошо, если вы ищете небольшое изменение в большом наборе данных.

9

Вы можете попробовать этот бесплатный онлайн-инструмент - www.cloudyexcel.com/compare-excel/

Это дает хороший визуальный выход онлайн, с точки зрения добавленных строк, удаление, изменение и т.д.

enter image description here

Plus вы выигрыш должны установить что-нибудь.

0

У меня проблема, как вы, поэтому я решил написать небольшой инструмент, чтобы помочь мне. Пожалуйста, проверьте ExcelDiff_Tools. Он поставляется с несколькими ключевыми моментами:

  • Поддержка xls, xlsx, xlsm.
  • С формулой ячейки. Он будет сравнивать как формулу, так и значение.
  • Я пытаюсь сделать UI похожим на стандартное средство просмотра текстовых файлов с: измененным, удаленным, добавленным, неизменным статусом. Пожалуйста, обратите внимание с изображением ниже, например: enter image description here
1

Новые версии MS Office поставляются с Spreadsheet Compare, который выполняет довольно хороший диф в GUI. Он обнаруживает большинство изменений.