Как создать читабельный diff из двух электронных таблиц, используя git diff? - PullRequest
162 голосов
/ 22 сентября 2008

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

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

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

Ответы [ 21 ]

2 голосов
/ 09 июля 2018

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

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

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

1 голос
/ 11 сентября 2012

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

Он будет обрабатывать электронные таблицы с использованием сопоставителей 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)

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

1 голос
/ 14 октября 2008

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

1 голос
/ 22 сентября 2008

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

1 голос
/ 09 апреля 2013

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

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

1 голос
/ 17 июня 2010

плагин xdocdiff для SVN

1 голос
/ 13 марта 2017

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

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

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

0 голосов
/ 22 сентября 2008

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

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

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

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

0 голосов
/ 22 августа 2018

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

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

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

...