git diff를 사용하여 두 스프레드시트의 읽기 가능한 diff를 어떻게 생성합니까?

StackOverflow https://stackoverflow.com/questions/114698

문제

우리 소스 코드 저장소에는 많은 스프레드시트(xls)가 있습니다.이는 일반적으로 gnumeric 또는 openoffice.org로 편집되며 주로 단위 테스트를 위해 데이터베이스를 채우는 데 사용됩니다. db단위.내가 아는 한 xls 파일에 대해 diff를 수행하는 쉬운 방법은 없으며 이로 인해 병합이 매우 지루하고 오류가 발생하기 쉽습니다.

스프레드시트를 xml로 변환하고 일반 비교를 수행하려고 시도했지만 실제로는 최후의 수단이어야 할 것 같습니다.

나는 다음과 비교(및 병합)를 수행하고 싶습니다. git 텍스트 파일과 마찬가지로요.어떻게 해야 할까요?발행할 때 git diff?

도움이 되었습니까?

해결책

우리 회사에서도 똑같은 문제에 직면했습니다.우리의 테스트는 Excel 통합 문서를 출력합니다.바이너리 diff는 옵션이 아니었습니다.그래서 우리는 간단한 명령줄 도구를 출시했습니다.확인해 보세요 Excel비교 프로젝트.실제로 이를 통해 테스트를 매우 훌륭하게 자동화할 수 있습니다.패치/기능 요청을 환영합니다!

다른 팁

외부 도구 없이 빠르고 쉽게 비교할 수 있는 두 시트가 유사한 경우 잘 작동합니다.

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

시트가 유사한 경우 이 스프레드시트는 X가 표시된 몇 개의 셀을 제외하고는 비어 있어 차이점이 강조됩니다.무엇이 다른지 빠르게 확인하려면 40%로 확대/축소하세요.

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

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

B) Excel 파일을 마우스 오른쪽 버튼으로 클릭하여 A단계부터 새 Java 프로그램을 실행하려면 Windows 셸 확장을 추가합니다.이렇게 하면 이 프로그램을 실행하는 것이 매우 쉽습니다.이를 수행하는 방법은 Google에 문의해야 하지만 *.reg 파일을 작성하는 것만큼 쉽습니다.

다) 받기 너머비교.구분된 데이터를 멋진 테이블로 표시하여 비교하는 아주 멋진 기능이 있습니다. 스크린샷 보기.

D) 이제 Excel 파일을 쉽게 비교할 준비가 되었습니다.Excel 파일 1을 마우스 오른쪽 버튼으로 클릭하고 덤프 프로그램을 실행합니다.워크시트당 하나의 파일이 포함된 폴더가 생성됩니다.Excel 파일 2를 마우스 오른쪽 버튼으로 클릭하고 덤프 프로그램을 실행합니다.워크시트당 하나의 파일이 포함된 두 번째 폴더가 생성됩니다.이제 BeyondCompare(BC)를 사용하여 폴더를 비교하세요.각 파일은 워크시트를 나타내므로 워크시트에 차이가 있으면 BC에서 이를 표시하고 드릴다운하여 파일을 비교할 수 있습니다.BC는 멋진 표 레이아웃으로 비교 결과를 표시하며, 관심 없는 행과 열을 숨길 수 있습니다.

이 무료 온라인 도구를 사용해 볼 수 있습니다. www.cloudyexcel.com/compare-excel/

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

enter image description here

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

나는 발견했다 xdocdiff WinMerge 플러그인.WinMerge용 플러그인입니다(둘 다 오픈소스 그리고 프리웨어, VBA를 작성하거나 Excel을 csv 또는 xml에 저장할 필요가 없습니다.그것은 셀드의 내용에만 작동합니다.

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

  • .rtf 리치 텍스트
  • .docx/.docm 마이크로소프트 워드 2007(OOXML)
  • .xlsx/.xlsm 마이크로소프트 엑셀 2007(OOXML)
  • .pptx/.pptm 마이크로소프트 파워포인트 2007(OOXML)
  • .doc 마이크로소프트 워드 버전 5.0/95/97/2000/XP/2003
  • .xls 마이크로소프트 엑셀 ver5.0/95/97/2000/XP/2003
  • .ppt 마이크로소프트 파워포인트 97/2000/XP/2003
  • .sxw/.sxc/.sxi/.sxd 오픈오피스.org
  • .odt/.ods/.odp/.odg 문서 열기
  • .wj2/wj3/wk3/wk4/123 로터스 123
  • .wri Windows3.1 쓰기
  • .pdf 어도비 PDF
  • .mht 웹 아카이브
  • .eml OutlookExpress에서 내보낸 파일

안부, 안드레스

흠.Excel 메뉴에서 창 -> 나란히 비교를 선택합니까?

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

문서를 마우스 오른쪽 버튼으로 클릭 > Tortoise SVN > 로그 표시 > 개정판 선택 > "작업 복사본과 비교"를 마우스 오른쪽 버튼으로 클릭합니다.

여러 응답에서 파일을 csv 또는 다른 텍스트 형식으로 내보낸 다음 비교할 것을 제안했다는 것을 알고 있습니다.구체적으로 언급된 것을 본 적은 없지만 Beyond Compare 3에는 지원하는 추가 파일 형식이 많이 있습니다.보다 추가 파일 형식.Microsoft Excel 파일 형식 중 하나를 사용하면 다른 형식 옵션으로 내보내기를 거치지 않고도 두 개의 Excel 파일을 쉽게 비교할 수 있습니다.

MS Office의 최신 버전에는 다음이 포함되어 있습니다. 스프레드시트 비교, 이는 GUI에서 상당히 좋은 diff를 수행합니다.대부분의 변경 사항을 감지합니다.

도서관이 있습니다 바보 (data diff의 약어) 테이블을 비교하고, 차이점 요약을 생성하고, 해당 요약을 패치 파일로 사용하는 데 도움이 됩니다.

Haxe로 작성되었기 때문에 주요 언어로 컴파일이 가능합니다.

나는 만들었습니다 Excel 비교 도구 이 라이브러리의 도움으로 Javascript로.숫자 및 작은 문자열에서는 잘 작동하지만 출력은 긴 문자열(예:약간의 문자 변경이 포함된 긴 문장).

사용 Altova Diff개

diffdog의 XML diff 모드와 그리드 보기를 사용하여 읽기 쉬운 표 형식으로 차이점을 검토하세요.복잡한 스프레드시트에서는 텍스트 비교가 훨씬 더 어렵습니다.이 도구를 사용하면 다양한 상황에서 최소한 두 가지 방법을 사용할 수 있습니다.

  1. .xml로 저장

    간단한 단일 시트 스프레드시트의 차이점을 확인하려면 Excel 스프레드시트를 저장하여 .xml 확장자를 가진 XML 스프레드시트 2003으로 비교할 수 있습니다.

  2. .xlsx로 저장

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

저장할 때마다 특정 속성 이름을 조정하는 Excel의 성향은 짜증나지만 diffdog의 XML 비교 기능에는 특정 종류의 차이점을 필터링하는 기능이 포함됩니다.예를 들어 XML 형식의 Excel 스프레드시트에는 다음이 포함됩니다. row 그리고 c 가지고 있는 요소 s 저장할 때마다 이름이 바뀌는 속성(스타일).다음과 같은 필터를 설정합니다. c:s 콘텐츠 변경 사항만 보는 것이 훨씬 쉬워졌습니다.

diffdog에는 많은 diff'ing 기능이 있습니다.Excel 문서의 차이점을 비교할 때 더 마음에 드는 다른 도구를 사용하지 않았기 때문에 XML 차이점 모드를 나열했습니다.

diff 수행이 중요하다면 SYLK 파일 형식을 사용하겠습니다.텍스트 기반 형식이므로 이진 형식보다 비교가 더 쉽고 간편해집니다.Excel, Gnumeric 및 OpenOffice.org와도 호환되므로 세 가지 도구 모두 함께 잘 작동할 수 있습니다.SYLK 위키피디아 기사

오픈오피스 매크로를 찾았습니다 여기 그러면 두 파일에 대해 오픈오피스의 문서 비교 기능이 호출됩니다.불행하게도 오픈오피스의 스프레드시트 비교는 약간 불안정해 보입니다.방금 '모두 거부' 버튼을 사용하여 문서에 불필요한 열을 삽입했습니다.

SVN용 xdocdiff 플러그인

Java를 사용하는 경우 시도해 볼 수 있습니다. 단순 엑셀.

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을 지원합니다.
  • 수식 셀 포함.수식과 값을 모두 비교합니다.
  • 다음을 사용하여 UI를 표준 diff 텍스트 뷰어처럼 보이게 만들려고 합니다.수정, 삭제, 추가, 변경되지 않은 상태입니다.예를 들어 아래 이미지를 살펴보십시오.enter image description here

차이점 문서 당신이 찾고 있는 것일 수도 있습니다.

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

어떤 도구도 모르지만 마음에 드는 두 가지 직접 롤 솔루션이 있습니다. 둘 다 Excel이 필요합니다.

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

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

스프레드시트가 처음부터 구조적으로 "닫혀" 있지 않으면 두 경우 모두 많은 "노이즈"가 발생하게 됩니다.

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

저는 무료 오픈 소스 Git 확장 프로그램의 공동 저자입니다.

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

이를 통해 Git은 해결 방법 없이 모든 Excel 통합 문서 파일 형식에서 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top