엑셀 비교기 사용 가이드

두 XLSX·CSV 파일을 브라우저 안에서 비교하는 방법과 실전 팁.

1. 두 파일을 올리기

상단의 파일 A · 원본 / 파일 B · 수정본 두 드롭존에 XLSX·XLS·CSV·TSV 파일을 드래그하거나 클릭해서 선택합니다. 파일은 절대 업로드되지 않으며, 브라우저 안의 SheetJS(xlsx) 커뮤니티 에디션이 모든 파싱을 처리합니다. 네트워크를 끊어도 동작합니다.

2. 시트 선택

XLSX가 여러 시트를 포함하면 각 드롭존 아래의 시트 선택 드롭다운에서 비교할 시트를 고릅니다. 다른 파일의 다른 시트도 비교 가능합니다(예: A의 "2024" vs B의 "2025").

3. 키 컬럼 이해하기

키 컬럼은 "어떤 셀 값으로 같은 행을 찾을 것인가" 를 정합니다. 예:

  • 직원 명부 → 사번(EmpID)
  • 상품 목록 → SKU
  • 세금계산서 → 공급가액 + 공급받는자 조합(현재 1개 컬럼만 지원)

첫 행이 헤더로 간주되며, A·B 두 파일 모두에 존재하는 컬럼이 드롭다운 맨 위에 먼저 표시됩니다. 같은 키가 한 파일에 여러 번 등장하면 등장 순서대로 1:1 매칭됩니다.

4. 결과 해석

  • 노란색 · 변경 — 같은 키의 행이 양쪽에 있으나 일부 셀 값이 다름. 변경된 셀은 진한 노랑으로 표시.
  • 초록색 · 추가 — B 파일에만 존재하는 새 행.
  • 빨간색 · 삭제 — A 파일에만 존재하던 사라진 행.

상단 배지에는 "N건 변경 · N건 추가 · N건 삭제" 요약이 뜹니다. 결과 테이블은 화면에서는 상위 500행만 렌더링하지만 XLSX·CSV 다운로드는 전체를 포함합니다.

5. 내보내기

결과 XLSX 다운로드는 4개 시트(요약·변경·추가·삭제)로 구성된 파일을 생성합니다.

  • Summary — 시트명, 키 컬럼, 카운트 요약.
  • 변경 Modified — 키 · 컬럼 · Before(A) · After(B) 4열 형식.
  • 추가 Added — B에만 있는 행 전체.
  • 삭제 Removed — A에서 사라진 행 전체.

CSV 다운로드는 3개 섹션을 한 파일에 담고, UTF-8 BOM을 넣어 한글 헤더가 엑셀에서 깨지지 않도록 합니다.

6. 병합셀과 수식

병합셀은 좌상단 셀의 값으로 단순화됩니다(엑셀의 기본 동작과 동일). 수식은 계산된 값으로 비교되며, 원본 수식 문자열(=SUM(A1:A10))은 비교되지 않습니다. 수식 자체를 diff 하고 싶다면 엑셀에서 값으로 변환 후 다시 올려 주세요.

7. 대용량 파일

10만 행 이상이면 상단에 경고가 뜨며, 브라우저에 따라 수십 초가 걸릴 수 있습니다. 실무 기준 권장 한계:

  • 일반 노트북 — 20만 행 × 30열까지 부드럽게 작동
  • 50만 행 이상 — 시트를 쪼개어 2~3회에 나누어 비교하는 것을 권장

8. 한/영 혼재 컬럼명 정규화

A·B 의 컬럼명이 거래일자 / 거래 일자 / 거래일자 (전각 공백) 처럼 다르더라도 자동 정규화(NFKC + trim + 공백 축약 + 소문자) 로 같은 컬럼으로 인식합니다. 다만 영한 번역(Name ↔ 이름)은 자동 매칭되지 않으므로 양쪽 파일에서 헤더를 통일해 주세요.

9. 프라이버시

이 도구는 S3 정적 호스팅이며, 파일을 받을 서버 엔드포인트가 존재하지 않습니다. 개발자도구의 Network 탭을 열고 비교를 실행하면 업로드 트래픽이 0바이트인 것을 직접 확인할 수 있습니다. 한국 공공기관· 기업의 "파일 업로드 금지" 보안 정책 아래에서도 안심하고 쓸 수 있습니다. 보안 부서 검토용으로 본 도구의 동작 방식을 정리하면 다음과 같습니다: (1) HTML·JS·CSS만 CDN(CloudFront)에서 전달, (2) 파일 파싱은 모두 브라우저 메모리에서 진행, (3) fetch·XMLHttpRequest 호출은 GA4 페이지뷰 1건과 광고 SDK 외에 존재하지 않음, (4) 파일 내용은 React 상태로만 보관되어 페이지 이동·새로고침 시 즉시 소멸합니다. 엔터프라이즈 환경에서는 본 페이지를 즐겨찾기로 두고 "사내 인트라넷에서만 접속" 정책으로 운영하는 사례도 보고되고 있습니다.

10. 비교 결과를 GitHub PR에 첨부하는 워크플로우

엑셀 데이터를 코드와 함께 버전 관리하는 팀에서는 다음 패턴이 권장됩니다.

  1. 리뷰 대상 XLSX 두 파일(원본·수정본)을 본 도구에 올려 비교.
  2. 결과 XLSX 다운로드 버튼을 눌러 4-시트 보고서(요약·변경·추가·삭제) 생성.
  3. 해당 결과 파일을 PR의 첨부파일로 등록 — 리뷰어가 시각적 diff 없이도 변경 항목을 빠르게 확인.
  4. 대용량(10만 행+) 변경이면 CSV 다운로드를 활용 — 텍스트 diff 도구와 호환됩니다.

Git LFS 없이도 결과 XLSX는 1MB 미만으로 압축되는 경우가 대부분이라 PR 본문에 임베드 가능합니다. 엑셀 원본 자체를 PR에 올리는 것보다 변경점만 추출한 결과 시트를 첨부하는 게 리뷰 속도 측면에서 우수합니다.

11. 자주 발생하는 데이터 정합성 문제

실무에서 가장 흔한 5가지 함정과 해결책입니다.

  • 날짜 형식 혼재: "2025-04-15" vs "2025/04/15" vs Excel 시리얼(45765)이 동일 컬럼에 섞여 비교 결과가 모두 "변경"으로 표시됨. 해결: 양쪽을 동일 표시 형식으로 변환 후 비교.
  • 천 단위 구분자 차이: "1,234,567" vs "1234567"는 문자열 비교 시 다르게 판단됨. 정규화 옵션을 켜거나 양쪽을 숫자 형식으로 통일하세요.
  • 빈 셀의 의미: 빈 문자열 ""·NULL·0이 혼재된 경우 "변경"으로 표시. 사전에 일괄 채움 처리 권장.
  • 숨겨진 시트: 비교 대상이 아닌 시트가 시트 선택 드롭다운에 보이지 않을 수 있음. 엑셀에서 시트 마우스 우클릭 → 표시 후 다시 업로드.
  • 피벗·차트 시트: 데이터 영역이 아닌 피벗·차트 시트는 단일 셀로 표시되어 의미 있는 diff 가 어려움. 원본 데이터 시트를 직접 비교하세요.

12. 보안 검토를 위한 자체 검증 절차

본 도구가 정말로 "업로드 0바이트"인지 직접 확인하는 5단계 검증 절차입니다. 보안팀·내부 감사 대응 시 그대로 첨부 가능한 수준으로 구성했습니다.

  1. 크롬·엣지·파이어폭스 중 하나에서 F12 또는 Ctrl+Shift+I로 개발자 도구 오픈.
  2. Network 탭에서 Preserve log 체크 후 Clear로 기존 로그 초기화.
  3. 본 페이지에서 파일 A·B 두 개 업로드 후 비교 실행.
  4. Network 탭의 Initiator: xldiff 컬럼을 보면 HTML/JS/CSS 다운로드 외 요청이 없음을 확인.
  5. Method 컬럼 필터에서 POST·PUT 요청이 0건임을 확인.

결과를 PDF로 출력해 보안팀에 제출하면 "외부 서버로 파일이 전송되지 않음"을 증명할 수 있습니다.

비교 화면으로 돌아가기