XLSX 변환기가 날짜를 5자리 숫자로 출력하는 문제: Excel은 값을 아닌 일련번호로 날짜를 저장합니다
요약
Excel은 날짜를 실제 날짜 값으로 저장하는 것이 아니라, 1900년 1월 1일부터 경과된 일수를 나타내는 '일련번호(serial number)'라는 숫자 형태로 저장합니다. 따라서 XLSX 변환 시 이 원시 숫자를 이해하고 사람이 읽을 수 있는 형식으로 재변환해야 합니다.
핵심 포인트
- Excel의 날짜는 실제 날짜가 아닌 일련번호(숫자)로 저장됨.
- 시간은 소수점 부분으로 표현되며, 1일이 정수부임.
- 화면에 보이는 날짜는 셀의 '표시 형식'에 의한 렌더링 결과일 뿐임.
제 시간 기록표(timesheet) 워크북을 제 컨버터에 넣었더니 마크다운 테이블이 거의 완벽하게 나왔습니다. 단지 '날짜' 열의 내용이 45291, 45292, 45293으로 표시된 것만 제외하고요. 사람이 만든 시트는 "12/31/2023, 01/01/2024, 01/02/2024"로 되어 있었습니다. 제 것은 어떤 사람도 이해할 수 없는 숫자들로 가득했습니다.
Excel은 날짜를 아예 저장하지 않습니다. 모든 날짜는 일련번호(serial number)입니다: 1900년 1월 1일부터 경과된 일수이며, 시간은 소수점 부분으로 표현됩니다. 45366.5는 2024년 3월 15일 정오를 의미합니다. 사람이 읽을 수 있는 날짜는 순전히 셀의 숫자 형식 문자열(number format string) — 예: yyyy-mm-dd, [$-409]mmmm d, yyyy 등 작성자가 선택한 것 — 에 의해 결정됩니다. XML에서 원시 값(raw value)을 읽으면 일련번호를 얻게 됩니다.
이 함정은 날짜에만 국한되지 않습니다:
- 형식(
[h]:mm)이 적용된0.0833을 담는 셀은
더 큰 교훈은 이렇습니다: 스프레드시트는 데이터 형식인 척하는 표시 형식입니다. 화면에서 보이는 모든 것은 렌더링 결정일 뿐이며, 파일 자체는 숫자와 서식 문자열만 저장합니다. 그중 일부는 1987년 Lotus 호환성을 위해 내려진 결정들입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기