Excel 은 CSV 다음으로 세계에서 가장 많이 ship 되는 데이터 포맷이고, 만지는 비용은 항상 세 곳에서 나타나: 타입 혼동, 숨은 state, round-trip drift.
타입 혼동
Excel 은 파일 열거나 paste 할 때 type 을 auto-detect. 한번 detect 되면 type 이 cell 에 저장돼 — 즉 CSV 를 Excel 로 열고 다시 저장하는 게 값을 영구히 바꿀 수 있어. 고전 범죄자들:
- 앞 0 사라짐 (
00123ZIP →123). - 긴 ID 가 과학 표기로 (
1234567890123456→1.23457E+15, 마지막 자리 손실). - 유전자 이름이 날짜로 파싱 (
MARCH1→1-Mar). - 분수처럼 보이는 string 이 분수로 (
1/2→0.5).
숨은 state
Excel 파일은 셀 값만이 아니야. 수식, 조건부 서식, 명명된 범위, 숨은 column, autofilter, 댓글, 변경 추적, 임베드 객체, 매크로. openpyxl 이나 pandas 로 XLSX 읽으면 그 대부분을 무시 — 괜찮지만, 본인이 읽는 파일이 사람이 보는 파일이 아니란 의미.
Round-trip drift
같은 파일을 편집 없이 읽고 쓰기만 해도 수식 평가 순서, locale 별 구분자, float 표현이 작은 diff 만들어서 git commit 망치고 downstream consumer 걸려.
규칙: 파이프라인 boundary 에서 (사람이 줄 때) 만 Excel 읽고 즉시 Parquet 으로 변환. Excel 을 절대 파이프라인 stage 로 만들지 마 — 입력 또는 출력으로만.