Как создать читаемый diff из двух электронных таблиц с помощью git diff?



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



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



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

835   21  

21 ответов:

мы столкнулись с точно такой же проблемой в наше сотрудничество. Наши тесты выводят книги excel. Бинарный diff не был вариантом. Поэтому мы развернули наш собственный простой инструмент командной строки. Проверьте ExcelCompare project. Фактически это позволяет нам автоматизировать наши тесты довольно хорошо. Патчи / пожелания вполне приветствуются!

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

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

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

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

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

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

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

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

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

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

enter image description here

плюс вам не нужно ничего устанавливать.

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

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

  • .богатый РТФ текст
  • .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/ХР/2003
  • .ppt Microsoft PowerPoint 97/2000 / XP / 2003
  • .sxw/.параметров/.sxi/.sxd OpenOffice.org
  • .odt/.ОРВ./odp/.odg открыть документ
  • .Wj2/wj3/wk3/wk4 / 123 Lotus 123
  • .ИМР Windows3.1 написать
  • .pdf Adobe PDF
  • .MHT Web Архив
  • .EML экспортировал файлы из OutlookExpress

С Уважением, Андрес

Хммм. В меню Excel выберите Окно - > сравнить бок о бок?

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

щелкните правой кнопкой мыши документ > Черепаха SVN > показать журнал > выберите ревизию > щелкните правой кнопкой мыши для "сравнить с рабочей копией".

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

использовать Altova DiffDog

используйте режим XML diff diff и вид сетки diffdog для просмотра различий в удобном для чтения табличном формате. Разделение текста намного сложнее для электронных таблиц любой сложности. С помощью этого инструмента, по крайней мере, два метода являются жизнеспособными при различных обстоятельствах.

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

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

  2. Сохранить Как .XLSX-файл

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

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

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

новые версии MS Office поставляются с Таблица Сравнения, который выполняет довольно хороший diff в графическом интерфейсе. Он обнаруживает большинство видов изменений.

библиотека Дафф (сокращение от data diff), который помогает в сравнении таблиц, создании резюме их различий и использовании такого резюме в качестве файла патча.

Он написан на языке Haxe, поэтому он может быть скомпилирован на основных языках.

Я Excel Diff Tool в JavaScript с помощью этой библиотеки. Он хорошо работает с числами и маленькими строками, но выход не идеален для длинных строк (например, длинное предложение с минором изменение характера).

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

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

xdocdiff плагин для SVN

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

он будет различать электронные таблицы с помощью Hamcrest matchers и выводить что-то вроде этого.

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)

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

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

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

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

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

Diff Doc может быть то, что вы ищете.

  • сравнить документы в Word (в формате DOC, DOCX и др.), в формате Excel, в формате PDF, богатый текст (rtf), текст, HTML и XML, PowerPoint или WordPerfect и сохраняют форматирование
  • выберите любую часть любого документа (файла) и сравните ее с любой частью того же или другого документа (файла).

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

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

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

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

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

Я соавтор бесплатного расширения Git с открытым исходным кодом:

https://github.com/ZoomerAnalytics/git-xltrail

Это делает Git работать с любым форматом файла книги Excel без каких-либо обходных путей.

Comments

    Ничего не найдено.