CSV가 엑셀 한 칸에 붙는 이유와 구분자 해결법

JSON 배열을 CSV로 바꿔서 받은 사람에게 보냈는데, 정작 상대방이 엑셀에서 열어보면 값이 전부 A열 한 칸에 쉼표까지 그대로 붙어서 나오는 경우가 있습니다. 파일이 깨진 게 아니라 엑셀이 CSV를 여는 방식과 관련된 문제입니다. 원인을 알면 변환 단계에서 구분자만 바꿔서 이 문제를 피할 수 있습니다.
요약 ① 엑셀은 CSV를 더블클릭으로 열 때 파일 안 구분자가 아니라 운영체제의 "목록 구분 기호" 설정을 따릅니다. ② 소수점 기호로 쉼표를 쓰는 지역(독일어·프랑스어·스페인어 등)은 이 설정이 기본값부터 세미콜론입니다. ③ 받는 쪽 환경을 모른다면 CSV를 세미콜론 구분자로 만들어 두면 더블클릭만으로도 열이 바로 나뉩니다.
문제 — 왜 이게 문제인가
API 응답이나 데이터베이스에서 뽑은 JSON 객체 배열을 CSV로 바꿔 팀원에게 보내는 일은 흔합니다. 받는 사람은 대개 파일 아이콘을 더블클릭해서 바로 엑셀로 엽니다.
그런데 열어보면 name,email,age 같은 헤더 한 줄이 A1 칸 하나에 쉼표까지 통째로 들어가 있고, B열과 C열은 비어 있는 경우가 있습니다. 파일을 메모장으로 다시 열어봐도 쉼표는 분명히 제대로 들어가 있습니다.
문제는 파일이 아니라, 그 파일을 연 엑셀 쪽의 설정입니다.
해결 — 이렇게 확인합니다
엑셀은 CSV 파일을 더블클릭으로 열 때 파일 확장자만 보고 실행되며, 실제 구분 문자가 무엇인지는 파일 내용을 분석해서 알아내지 않습니다. 대신 운영체제에 설정된 "목록 구분 기호"(list separator)를 그대로 사용합니다.
윈도우에서는 제어판 → 국가 또는 지역 → 형식 → 추가 설정에서 이 값을 확인할 수 있습니다. 이 기본값은 지역마다 다르게 정해져 있습니다.
한국어·영어(미국)처럼 소수점을 마침표로 쓰는 지역은 목록 구분 기호 기본값이 쉼표(,)입니다. 반면 독일어·프랑스어·스페인어처럼 소수점 자체를 쉼표로 쓰는 지역은 숫자 "3,14"와 열 구분이 동시에 쉼표를 쓰면 충돌하기 때문에, 목록 구분 기호가 기본값부터 세미콜론(;)으로 설정돼 있습니다.
이런 환경에서 쉼표로 만든 CSV를 더블클릭하면, 엑셀은 쉼표를 구분자로 인식하지 않고 한 줄 전체를 값 하나로 봅니다. 다른 운영체제도 시스템 지역 설정에 따라 같은 원리로 동작할 수 있습니다.
확인하는 방법은 두 가지입니다.
- CSV를 더블클릭하지 않고, 엑셀에서 새 통합 문서를 연 뒤 데이터 → 텍스트/CSV에서 가져오기를 선택하면 가져오기 화면에서 구분 기호를 쉼표로 직접 지정할 수 있습니다.
- 파일을 보내기 전에, CSV 자체를 상대방 환경에 맞는 구분자로 미리 만들어 두면 더블클릭만으로도 바로 열이 나뉩니다.
두 번째 방법이 매번 가져오기 화면을 여는 것보다 간단합니다. 구분자를 매번 손으로 골라야 하는 번거로움을 느낀 바로 그 지점에서, 저희 도구로 확인하기.
무료 · 가입 불필요 · 브라우저에서만 JSON을 CSV로 변환

이 도구는 JSON 객체 배열을 붙여넣으면 각 객체의 키를 헤더로 삼아 즉시 CSV로 바꿔줍니다. 구분자로 쉼표·탭·세미콜론·파이프 중 하나를 고를 수 있어서, 받는 사람의 지역이 세미콜론을 쓰는 환경이라면 변환 시점에 세미콜론을 선택해 내보내면 됩니다.
값 안에 선택한 구분자나 큰따옴표, 줄바꿈이 들어 있으면 그 값 전체를 자동으로 큰따옴표로 감싸 열이 밀리지 않게 처리합니다. 다운로드 파일에는 UTF-8 BOM이 이미 포함돼 있어, 이 글에서 다루는 구분자 문제와 한글이 깨지는 인코딩 문제는 서로 다른 원인입니다.
자주 막히는 지점
| 증상 | 원인 | 확인할 점 |
|---|---|---|
| 값이 전부 A열 한 칸에 붙음 | 목록 구분 기호와 CSV 구분자가 다름 | 구분자를 세미콜론으로 바꿔 다시 내보내기 |
| 값 안 쉼표까지 열이 잘림 | 값 안의 쉼표가 구분자와 겹침 | 값에 구분자가 있으면 자동으로 큰따옴표로 감싸짐 |
| 탭으로 내보냈는데 안 나뉨 | 복사·붙여넣기 과정에서 탭이 공백으로 바뀜 | 텍스트 복사 대신 CSV 파일 다운로드로 전달 |
| 한글이 깨져 보임 | 목록 구분 기호와는 무관한 인코딩 문제 | 다운로드 버튼으로 받은 파일인지 확인(BOM 포함됨) |
정리
CSV 값이 A열 한 칸에 붙어 나오는 건 파일이 깨진 게 아니라, 더블클릭으로 열 때 엑셀이 파일 안 구분자 대신 운영체제의 목록 구분 기호 설정을 따르기 때문입니다.
받는 사람의 지역 설정을 모른다면 가져오기 화면에서 구분자를 직접 지정하거나, CSV를 만들 때부터 세미콜론처럼 더 안전한 구분자를 선택해 두면 이 문제를 피할 수 있습니다.
무료 · 가입 불필요 · 브라우저에서만 JSON을 CSV로 변환
자주 묻는 질문
구분자를 세미콜론으로 바꾸면 다른 프로그램에서도 문제없이 열리나요?
스프레드시트나 데이터베이스 가져오기 도구는 대부분 구분자를 직접 지정하는 옵션을 제공하므로 세미콜론으로 만들어도 문제없이 읽을 수 있습니다. 다만 구분자를 고정값(쉼표)으로 기대하는 단순 스크립트라면, 받는 쪽이 어떤 방식으로 파일을 읽는지 먼저 확인하는 편이 안전합니다.
값 안에 세미콜론이 들어 있으면 어떻게 되나요?
구분자를 세미콜론으로 고른 상태에서 값 자체에 세미콜론이 들어 있으면, 그 값 전체가 큰따옴표로 자동으로 감싸집니다. 반대로 구분자를 쉼표로 두면 세미콜론은 그냥 글자로 취급되고, 값 안의 쉼표만 감싸집니다.
JSON이 객체 배열이 아니라 문자열이나 숫자로만 된 배열이면 어떻게 되나요?
["a", "b", "c"]처럼 객체가 아닌 값들의 배열을 넣으면 헤더 없이 "value"라는 이름의 열 하나만 만들어지고, 각 값이 한 줄씩 그 열에 들어갑니다.
