git diff를 사용하여 두 개의 스프레드 시트로 읽을 수있는 diff를 만들려면 어떻게합니까?


168

소스 코드 저장소에는 많은 스프레드 시트 (xls)가 있습니다. 이들은 일반적으로 gnumeric 또는 openoffice.org로 편집되며 주로 dbUnit으로 단위 테스트를 위해 데이터베이스를 채우는 데 사용됩니다 . 내가 아는 xls 파일을 쉽게 비교할 수있는 방법이 없기 때문에 병합이 매우 번거롭고 오류가 발생하기 쉽습니다.

스프레드 시트를 xml로 변환하고 정기적으로 비교를 시도했지만 실제로는 최후의 수단이되어야합니다.

git텍스트 파일 과 마찬가지로 diffing (및 병합)을 수행하고 싶습니다 . 예를 들어, 발행 할 때 어떻게해야 git diff합니까?


4
태그 단위 테스트 및 dbunit이 여기에 잘못 적용되었다고 생각합니다. 문제는 특정 파일 형식에 대한 파일 비교에 관한 것이며 단위 테스트와 관련이 없습니다.
Hamish Smith

1
아니 대답 (가 상용 제품을 Excel을 필요 &입니다)하지만 GooBinghoo에 의해 여기 가져 사람들을위한 - formulasoft.com/excel-compare.html 작품을 잘 나를 위해.
CAD bloke

1
이 Python 스크립트를 사용하여 체크인하는 Excel을 git에 비교합니다. : 나는 (펄에서 포팅 된) 파이썬이 GO 코드를 포팅 github.com/tokuhirom/git-xlsx-textconv#see-also 그것은 당신이 사용할 수 있도록 git diff하고gitk
nmz787


간단한 방법은 두 스프레드 시트의 데이터를 CSV / 텍스트로 내보내고 일반 diff (원하는 편집기 또는 diff 파일 사용)를 수행하는 것입니다.
PPC

답변:


109

우리는 공동으로 똑같은 문제에 직면했습니다. 테스트 결과 Excel 통합 문서가 출력되었습니다. 이진 diff는 옵션이 아니 었습니다. 그래서 우리는 우리 자신의 간단한 명령 행 도구를 출시했습니다. ExcelCompare 프로젝트를 확인하십시오 . 실제로 이것은 테스트를 아주 훌륭하게 자동화 할 수있게합니다. 패치 / 기능 요청은 매우 환영합니다!


2
@KimStacks yes는 모든 xls, xlsx, ods에서 작동합니다. 그리고 한 유형을 다른 유형과 비교할 수도 있습니다 (예 : xls v / s xlsx).
na_ka_na

1
훌륭한 도구 ...하지만 완벽하게 유효한 일부 xls 파일의 경우 "차단 실패 : Excel 파일로 읽지 못했습니다 :"라고 표시되어 있습니다. (다른 모든 관점에서 볼 때 훨씬 더 나쁘다) 대안을 찾는 사람은 github.com/toobaz/xlrd_diff를
Pietro Battiston

2
@PietroBattiston pls는 github에 티켓을 기록하고 그것을 볼 것입니다.
na_ka_na

@na_ka_na이 도구를 만들어 주셔서 감사합니다!
jgpawletko

111

외부 도구를 사용하지 않고 빠르고 쉽게 비교할 수있는 두 시트가 비슷한 한 잘 작동합니다.

  • 세 번째 스프레드 시트 작성
  • =if(Sheet1!A1 <> Sheet2!A1, "X", "")왼쪽 상단 셀에 입력 하십시오 (또는 동등한 것 : 실제 셀을 클릭하면 참조가 자동으로 수식에 삽입됩니다)
  • Ctrl+C(복사), Ctrl+A(모두 선택), Ctrl+V(붙여 넣기)를 사용하여 시트를 채 웁니다.

시트가 유사한 경우이 스프레드 시트는 X가 포함 된 몇 개의 셀을 제외하고 비어 있으며 차이점을 강조 표시합니다. 40 %로 확대를 해제하면 다른 점을 빠르게 확인할 수 있습니다.


6
이것은 셀 단위 비교를하지 않습니까? 왼쪽에 맨 위에 여분의 행이 하나 있으면 나머지 행 (및 셀)이 달라집니다. 그런 경우에는 그다지 유용하지 않습니다.
Hammad Khan

1
@Thecrocodilehunter : 당신은 항상 맨 위의 행을 삭제하고 나머지를 비교할 수 있습니다. 차이점이 훨씬 더 복잡하다면 물론 다른 도구가 필요합니다. Excel에서 스프레드 시트를 변경했다고 말하고 실수로 필드를 편집 할 때처럼 일회성 비교에 유용합니다.
iconoclast

1
나는 이것을 좋아했다. X를 수행하는 대신 "1"을 수행하고 첫 번째 행 및 열로 SUM을 가질 수 있습니다. 첫 번째 필드에 솜을 추가하면 얼마나 많은 필드가 다른지 빠르게 볼 수 있습니다.
Konerak 2013

5
수식을 약간 변경하여 정확한 차이점을 보지 않아도되었습니다. = IF (Sheet1! A1 <> Sheet2! A1, CONCATENATE ( "Sheet 1 =", Sheet1! A1, "Sheet 2 =", Sheet2! A1), "")
Martyn

1
을 입력하면 =Sheet1!A1=Sheet2!A1됩니다. TRUE 또는 FALSE를 인쇄합니다. 그런 다음 조건부 서식 또는 =countif(A1:B2, FALSE)이와 유사한 것을 수행 할 수 있습니다 .
user2023861

12

과거에 Excel 통합 문서를 많이 비교했습니다. 내 기술은 워크 시트가 많은 통합 문서에 매우 효과적이지만 셀 서식, 매크로 등이 아닌 셀 내용 만 비교합니다. 또한 코딩이 관련되어 있지만 많은 큰 파일을 반복적으로 비교 해야하는 경우 가치가 있습니다. 작동 방식은 다음과 같습니다.

A) 모든 워크 시트를 단계별로 실행하고 모든 데이터를 탭으로 구분 된 파일로 저장하는 간단한 덤프 프로그램을 작성하십시오. 워크 시트 당 하나의 파일을 작성하고 (워크 시트 이름을 파일 이름으로 사용하십시오 (예 : "MyWorksheet.tsv") 프로그램을 실행할 때마다 해당 파일에 대한 새 폴더를 작성하십시오. Excel 파일 이름 뒤에 폴더 이름을 지정하고 타임 스탬프를 추가하십시오 (예 : "20080922-065412-MyExcelFile"). JExcelAPI 라는 라이브러리를 사용하여 Java 에서이 작업을 수행했습니다 . 정말 쉽습니다.

B) Excel 파일을 마우스 오른쪽 버튼으로 클릭 할 때 A 단계에서 새 Java 프로그램을 실행하도록 Windows 셸 확장을 추가하십시오. 이를 통해이 프로그램을 매우 쉽게 실행할 수 있습니다. 이 작업을 수행하는 방법은 Google에 필요하지만 * .reg 파일을 작성하는 것만 큼 쉽습니다.

C) BeyondCompare를 얻으 십시오 . 멋진 테이블에 표시하여 구분 된 데이터를 비교할 수있는 매우 멋진 기능이 있습니다 (스크린 샷 참조) .

D) 이제 Excel 파일을 쉽게 비교할 준비가되었습니다. Excel 파일 1을 마우스 오른쪽 단추로 클릭하고 덤프 프로그램을 실행하십시오. 워크 시트 당 하나의 파일로 폴더를 만듭니다. Excel 파일 2를 마우스 오른쪽 단추로 클릭하고 덤프 프로그램을 실행하십시오. 워크 시트 당 하나의 파일로 두 번째 폴더를 만듭니다. 이제 BC (BeyondCompare)를 사용하여 폴더를 비교하십시오. 각 파일은 워크 시트를 나타내므로 워크 시트에 차이가있는 경우 BC에이를 표시하고 드릴 다운하여 파일을 비교할 수 있습니다. BC는 멋진 테이블 레이아웃으로 비교를 표시하며 관심이없는 행과 열을 숨길 수 있습니다.


12

이 무료 온라인 도구를 사용해보십시오 -www.cloudyexcel.com/compare-excel/

행 추가, 삭제, 변경 등의 관점에서 온라인으로 좋은 시각적 출력을 제공합니다.

여기에 이미지 설명을 입력하십시오

또한 아무것도 설치할 필요가 없습니다.


슬프게도 <2MB 파일에서만 작동합니다. 어쨌든 다른 사람에게는 효과가 있습니다.
MikeVelazco

10

xdocdiff WinMerge Plugin 을 찾았습니다 . WinMerge 용 플러그인입니다 ( OpenSourceFreeware 모두 VBA를 작성하거나 Excel을 csv 또는 xml에 저장할 필요가 없습니다). 그것은 단지 상자의 내용물에 대해서만 작동합니다.

이 플러그인은 다음도 지원합니다.

  • .rtf 리치 텍스트
  • .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 문서 열기
  • .wj2 / wj3 / wk3 / wk4 / 123 로터스 123
  • .wri Windows3.1 쓰기
  • .pdf Adobe PDF
  • .mht 웹 아카이브
  • .eml OutlookExpress에서 내 보낸 파일

안드레스


1
불행히도 압축을 푼 파일의 변경 사항을 저장할 수 없으므로 병합에 유용하지 않습니다. 그래도 무료입니다.
Sogger

6

흠. Excel 메뉴에서 창-> 나란히 비교 하시겠습니까?


+1은 잘 작동하지만 office 2007의 차이점을 강조하지는 않습니다. 이전 버전에서는 그렇지 않습니다. 시각적 비교에 여전히 좋습니다.
Hammad Khan

2
예, 강조 표시가 없으므로 동기 스크롤 만 있습니다.
Sogger

5

Subversion에서 커밋 및 업데이트를 수행하기 위해 TortoiseSVN을 사용합니까? diff 도구가 있지만 Excel 파일을 비교하는 것은 여전히 ​​사용자 친화적이지 않습니다. 내 환경 (Win XP, Office 2007)에서 나란히 비교하기 위해 두 개의 Excel 파일이 열립니다.

문서> Tortoise SVN> 로그 표시> 개정 선택> "작업 사본과 비교"를 마우스 오른쪽 단추로 클릭하십시오.


4

최신 버전의 MS Office에는 Spreadsheet Compare 가 제공되어 GUI에서 상당히 좋은 차이점을 보여줍니다. 대부분의 종류의 변화를 감지합니다.


이 답변이 명령 줄 기반 diff병합으로 OP의 상황에 도움이되지는 않지만 이 스프레드 시트 비교 도구는 내 목적에 완벽했습니다 (OpenXML 자동화 출력과 Excel COM 자동화 출력의 차이점 확인).
ErrCode

참고 :이 도구를 사용하여 자동화를 조사하려고했지만 작동하지 않았습니다 (도구가 계속 충돌합니다) : stackoverflow.com/a/35905262/7270462
ErrCode

4

라이브러리가 DAFF , 테이블을 비교하여 자신의 차이점을 요약하여 생산 및 패치 파일과 같은 요약을 사용하는 데 도움이 (데이터 DIFF의 줄임말).

Haxe로 작성되었으므로 주요 언어로 컴파일 할 수 있습니다.

이 라이브러리의 도움으로 Javascript로 Excel Diff Tool 을 만들었습니다 . 숫자 및 작은 문자열에서는 잘 작동하지만 긴 문자열에는 이상적이지 않습니다 (예 : 약간의 문자 변경이있는 긴 문장).


3

몇 가지 응답으로 파일을 csv 또는 다른 텍스트 형식으로 내 보낸 다음 비교하는 것이 좋습니다. 구체적으로 언급하지는 않았지만 Beyond Compare 3에는 지원되는 추가 파일 형식이 많이 있습니다. 보다추가 파일 형식을 . Microsoft Excel 파일 형식 중 하나를 사용하면 다른 형식으로 내보내기 옵션을 사용하지 않고도 두 개의 Excel 파일을 쉽게 비교할 수 있습니다.


2

diff를 수행하는 것이 중요한 경우 SYLK 파일 형식을 사용합니다. 텍스트 기반 형식이므로 이진 형식보다 비교가 쉽고 간편합니다. Excel, Gnumeric 및 OpenOffice.org 와도 호환되므로 세 가지 도구가 모두 잘 작동해야합니다. SYLK 위키 백과 기사


이것은 Excel 파일 (및 기타 파일)과 함께 git을 자주 사용하는 환경에서 일반적인 방법으로 채택 해야하는 훌륭한 솔루션입니다. 그것은 분명히 "git"친화적이며 (diffs는 사람이 읽을 수는 없지만) "modern"Excel (현재 2019) 이외의 추가 도구가 필요하지 않습니다. 또한 "양방향"이므로 다른 사용자가 Excel 스프레드 시트를 .slk (SYLK) 형식으로 저장 한 다음 필요할 때 Excel에서 모든 올바른 형식 등으로 열 수 있습니다.
D. Woods

2

Altova DiffDog 사용

diffdog의 XML diff 모드와 Grid View를 사용하여 읽기 쉬운 표 형식으로 차이점을 검토하십시오. 텍스트 diff'ing은 복잡한 스프레드 시트를위한 MUCH HARDER입니다. 이 도구를 사용하면 다양한 상황에서 두 가지 이상의 방법을 사용할 수 있습니다.

  1. .xml로 저장

    간단한 단일 시트 스프레드 시트의 차이점을 감지하려면 Excel 스프레드 시트를 저장하여 .xml 확장자를 가진 XML 스프레드 시트 2003과 비교하십시오.

  2. .xlsx로 저장

    모듈화 된 문서 모델에서 대부분의 스프레드 시트의 차이점을 감지하려면 Excel 스프레드 시트를 저장하여 .xlsx 형식의 Excel 통합 문서로 비교하십시오. diffdog으로 파일을여십시오. 파일이 ZIP 아카이브임을 알리고 디렉토리 비교를 위해 파일을 열 것인지 묻습니다. 디렉토리 비교에 동의하면 XML diff 모드를 사용하여 문서의 논리 부분을 두 번 클릭하여 비교하는 것이 비교적 간단합니다. .xslx 문서의 대부분은 XML 형식의 데이터입니다. 격자보기는 매우 유용합니다. 변경된 것으로 알려진 영역에 대한 분석에 초점을 맞추기 위해 개별 시트를 비교하는 것은 사소한 일입니다.

저장할 때마다 특정 속성 이름을 조정하는 Excel의 성가심은 성가 시지만 diffdog의 XML diff'ing 기능에는 특정 종류의 차이를 필터링하는 기능이 포함됩니다. 예를 들어 XML 형식의 Excel 스프레드 시트에는 저장 시마다 이름이 바뀌는 속성 (스타일)이 있는 요소 rowc요소가 포함 s됩니다. 필터를 설정 c:s하면 내용 변경 사항 만 훨씬 쉽게 볼 수 있습니다.

diffdog에는 많은 diff'ing 기능이 있습니다. Excel 문서를 차별화 할 때 더 좋아하는 다른 도구를 사용하지 않았기 때문에 XML 차이 모드 만 나열했습니다.


1

나는 오픈 오피스의 매크로를 발견 여기에 그 오픈 오피스의 비교 문서가이 개 파일에 대한 기능을 호출합니다. 불행히도, 오픈 오피스의 스프레드 시트 비교는 약간 색다른 것으로 보인다. 방금 '모두 거부'버튼으로 문서에 불필요한 열을 삽입했습니다.


1

SVN 용 xdocdiff 플러그인


xdocdiff 좋은 보이지만, TortioseSVN 요구하는 것
neu242

xdocdiff에는 WinMerge 플러그인도 있습니다. 둘 다 xdoc2txt를 사용합니다
Sogger

1

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)

나는 우리가 그 도구를 썼다는 것을 인정해야한다.


2
답변을 게시 해 주셔서 감사합니다! 자체 프로모션에 대한 FAQ를 주의 깊게 읽으십시오 . 또한 자신의 사이트 / 제품에 연결할 때마다 고지 사항을 게시 해야 합니다.
Andrew Barber

1

TortoiseSVN이있는 경우 CTRLWindows 탐색기에서 두 파일을 클릭하여 선택한 다음 TortoiseSVN-> Diff를 마우스 오른쪽 단추로 클릭하십시오.

큰 데이터 세트에서 약간의 변경을 원할 때 특히 효과적입니다.


그러나 Excel의 XLS 형식과 같은 이진 파일의 경우 특히 잘 작동 하지 않습니다 .
Charles Wood

1
@CharlesWood - 실제로 않습니다 특히 일을. Tortoise는 Excel 자체를 사용하여 diff를 제공하고 다른 셀을 빨간색으로 강조 표시합니다. 나는 그것을 시도하지는 않았지만 Word .doc 및 .docx 파일 (diff 뷰어로 사용되는 Word 사용)에서도 동일하게 작동합니다.
Chris B

와하 트! 내 일은하지 않습니다. 새로운 기능입니까, 아니면 플러그인을 설치하셨습니까?
Charles Wood

:-D TortoiseSVN 1.7.12를 가지고 있으며 즉시 사용할 수 있습니다. 도움말 파일에는 tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-diff.html을 지원한다고 명시되어 있습니다 . 스크립트를 사용하여 내 컴퓨터의 C : \ Program Files \ TortoiseSVN \ Diff-Scripts \ diff-xls.js 파일을 비교합니다. 스크립팅을 비활성화 한 컴퓨터에 그룹 정책이있을 수 있습니까?
Chris B

1

나는 당신과 같은 문제가있어서 나를 도울 작은 도구를 작성하기로 결정했습니다. ExcelDiff_Tools를 확인 하십시오 . 몇 가지 핵심 사항이 있습니다.

  • xls, xlsx, xlsm을 지원하십시오.
  • 수식 셀로. 수식과 값을 모두 비교합니다.
  • UI를 수정, 삭제, 추가, 변경되지 않은 표준 diff 텍스트 뷰어처럼 보이게하려고합니다. 예를 들어 아래 이미지를 살펴보십시오. 여기에 이미지 설명을 입력하십시오


0

Diff Doc 은 당신이 찾고있는 것일 수 있습니다.

  • MS Word (DOC, DOCX 등), Excel, PDF, 서식있는 텍스트 (RTF), 텍스트, HTML, XML, PowerPoint 또는 Wordperfect의 문서를 비교하고 서식 유지
  • 문서 (파일)의 일부를 선택하여 동일하거나 다른 문서 (파일)의 일부와 비교하십시오.

2
Diff Doc은 Windows 전용이며 비공개 소스이므로 실제로 내 요구에 맞지 않습니다.
neu242

0

도구를 모르지만 Excel을 필요로하는 두 가지 롤업 솔루션이 있습니다.

  1. 차이점을보고하면서 두 통합 문서의 각 워크 시트, 행, 열 및 셀을 단계별로 실행하는 VBA 코드를 작성할 수 있습니다.

  2. Excel 2007을 사용하는 경우 통합 문서를 Open-XML (*. xlsx) 형식으로 저장하고 XML을 추출하여 비교할 수 있습니다. Open-XML 파일은 본질적으로 .xml 파일과 매니페스트의 .zip 파일 일뿐입니다.

스프레드 시트가 구조적으로 "가까운"것이 아닌 경우 두 가지 경우에 많은 "소음"이 발생합니다.


Excel 2002부터는 xlsx 파일을 처리하는 것보다 간단한 'XML 스프레드 시트'형식으로 저장할 수도 있습니다.
Sam Warwick

0

cvs로 변환 한 다음 버전 제어 시스템에 업로드 한 다음 고급 버전 제어 diff 도구를 사용하여 비교하십시오. perforce를 사용할 때 훌륭한 diff 도구가 있었지만 이름을 잊었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.