CSV는 다양한 데이터 분석 소프트웨어에서 널리 사용되는 표준 형식입니다. 높은 호환성을 자랑하고 정리와 편집이 쉽기 때문에, 상황에 따라 데이터 세트를 엑셀에서 CSV 형식으로 변환해야 하는 경우가 종종 발생합니다. 이 글에서는 엑셀 파일을 CSV로 자동 변환하는 방법을 단계별로 자세히 알려드립니다.
각 방법을 따라 하며 직접 실습해 보고 싶으시다면, 아래 첨부된 예제 파일을 활용하세요. 데모에 사용된 데이터 세트와 VBA 코드가 모두 포함되어 있어 다운로드 후 함께 연습할 수 있습니다.
CSV란 무엇인가?
CSV(Comma-Separated Values, 쉼표로 구분된 값)는 이름 그대로 값들을 문자열로 저장하고 쉼표를 구분자(delimiter)로 사용해 서로 분리하는 파일 형식입니다. 개념은 간단해 보이지만, 대량의 데이터가 추가되면 파일이 복잡해질 수 있습니다. 그럼에도 불구하고 파이썬의 Pandas 라이브러리 같은 프로그래밍 도구나 여러 소프트웨어는 CSV 파일을 입력값으로 선호합니다.
CSV 파일의 주요 장점은 다음과 같습니다.
- 다양한 플랫폼의 사용자들에게 폭넓게 지원됩니다
- 정리와 편집이 매우 쉽습니다
- Microsoft Excel, Google 스프레드시트 등 거의 모든 주요 스프레드시트 프로그램과 호환됩니다
- 다양한 비즈니스 소프트웨어에서도 활용됩니다
반면 큰 단점도 있습니다. CSV 파일에는 하나의 시트만 담을 수 있다는 점입니다. 반면 엑셀의 .xlsx 파일은 하나의 파일 안에 여러 시트와 다양한 데이터 세트를 동시에 포함할 수 있습니다.
엑셀 파일을 CSV로 자동 변환하는 3가지 방법
엑셀은 스프레드시트를 CSV 파일로 변환하는 여러 가지 방법을 제공합니다. 가장 많이 쓰이는 방법은 '다른 이름으로 저장' 기능이지만, 데이터에 특수 문자가 포함되어 있거나 여러 시트를 한 번에 변환해야 하는 경우에는 다른 방법이 필요할 수 있습니다.
이해를 돕기 위해 방법별로 섹션을 나누고, 각 방법의 장단점도 함께 정리했습니다. 전체 과정을 순서대로 따라가셔도 되고, 아래에서 필요한 방법만 골라 확인하셔도 됩니다.
방법 1: '다른 이름으로 저장' 명령으로 변환하기
가장 간편하고 널리 사용되는 방법입니다. 시트에 유니코드 특수 문자가 없다면 이 방법으로 충분합니다. 엑셀의 '다른 이름으로 저장' 기능은 파일을 다른 형식으로 변환할 때도 활용할 수 있으며, CSV 변환 역시 마찬가지입니다.
아래는 실습에 사용된 예제 데이터입니다.

단계:
- 엑셀 파일에 여러 시트가 있다면, 먼저 변환할 시트를 선택합니다.
- 리본 메뉴에서 파일 탭을 클릭합니다.

- 다른 이름으로 저장을 클릭합니다. 참고로 위 두 단계를 건너뛰고 키보드의 F12 키를 눌러도 '다른 이름으로 저장' 창을 바로 열 수 있습니다.

- '다른 이름으로 저장' 창에서 저장 위치를 지정하고, 파일 형식 항목에서 CSV(쉼표로 분리)를 선택합니다. CSV UTF-8을 선택해도 동일한 결과를 얻을 수 있습니다.

- 저장 버튼을 클릭합니다.
- 파일에 여러 시트가 있을 때 "첫 번째 시트만 변환됩니다"라는 경고 창이 나타나면 확인을 누릅니다.

이렇게 하면 엑셀 파일이 자동으로 CSV로 변환됩니다.

변환된 파일을 엑셀에서 다시 열면 아래와 같이 모든 서식이 제거된 상태로 표시됩니다.

함께 읽으면 좋은 글: 엑셀을 쉼표 구분 CSV 파일로 변환하는 쉬운 2가지 방법
방법 2: 특수 문자가 포함된 엑셀 파일을 CSV로 변환하기
유니코드 특수 문자가 포함된 시트를 방법 1처럼 저장하면, 나중에 데이터를 다시 불러올 때 문제가 생길 수 있습니다. CSV(쉼표로 분리) 형식으로 저장하면 ASCII가 아닌 모든 문자가 깨지기 때문입니다. 데이터에 특수 문자가 있다면 아래 두 가지 방법 중 하나를 사용해 문자가 손상되지 않도록 변환하세요.
두 방법 모두 중국어(북경어) 인명이 포함된 아래 데이터 세트를 사용했습니다.

엑셀을 CSV로 변환할 때는 UTF-8과 UTF-16, 두 가지 유니코드 인코딩을 사용할 수 있습니다. 두 방식의 주요 차이점은 UTF-8이 더 압축적인 인코딩 방식으로 영문과 숫자 등 일반 문자를 8비트로 처리하는 반면, UTF-16은 모든 문자를 최소 16비트로 인코딩한다는 점입니다. 어느 쪽으로 변환해도 비슷한 CSV 파일을 얻을 수 있지만, 이 예제처럼 아시아권 문자에는 UTF-16이 권장됩니다.
2-1. CSV UTF-8로 저장하기
UTF-8은 ASCII 문자를 기존 ASCII 파일과 동일하게 인코딩합니다. 따라서 변환해야 할 유니코드 문자가 많지 않다면 UTF-8로 변환하는 것이 좋습니다.
엑셀 파일을 CSV UTF-8로 자동 변환하려면 다음 단계를 따르세요.
단계:
- 엑셀 파일에 여러 시트가 있다면 먼저 CSV로 변환할 시트를 선택합니다.
- 리본 메뉴에서 파일 탭을 클릭합니다.

- 다른 이름으로 저장을 클릭합니다. 이전과 마찬가지로 F12 키를 눌러 같은 결과를 얻을 수도 있습니다.

- '다른 이름으로 저장' 창에서 저장 위치를 지정하고, 파일 형식 항목에서 CSV UTF-8(쉼표로 분리)을 선택합니다.

- 저장을 클릭합니다.
- 여러 시트가 있는 파일이라면 "첫 번째 시트만 변환됩니다"라는 경고 창이 나타날 수 있습니다. 확인을 눌러 진행합니다.

이 방법을 사용하면 특수 문자가 깨지거나 손상되지 않고 엑셀 파일을 CSV로 변환할 수 있습니다.
변환이 완료되면 CSV 파일은 아래와 같이 모든 데이터를 그대로 유지한 상태로 저장됩니다.

엑셀로 열었을 때는 다음과 같이 표시됩니다.

2-2. CSV UTF-16으로 저장하기
예제 데이터처럼 아시아권 문자가 포함된 경우에는 UTF-16을 사용하는 것이 좋습니다. 단점은 UTF-8보다 더 많은 바이트를 차지하고 ASCII 파일과 완전히 호환되지 않는다는 점입니다.
그래도 엑셀 파일을 CSV UTF-16으로 자동 변환하고 싶다면 아래 단계를 따르세요.
단계:
- 먼저 변환할 시트를 선택합니다(여러 시트가 있는 경우).
- 리본 메뉴에서 파일 탭으로 이동합니다.

- 다른 이름으로 저장을 선택합니다. 또는 앞의 두 단계를 생략하고 F12 키를 눌러도 됩니다.

- '다른 이름으로 저장' 창에서 저장 위치를 지정하고, 파일 형식을 유니코드 텍스트로 선택합니다.

- 저장을 클릭합니다.
- 텍스트 파일(.txt)로 저장됩니다. 이제 메모장 같은 텍스트 편집기로 파일을 열어보세요. 데이터 사이가 탭(Tab)으로 구분되어 있는 것을 확인할 수 있습니다.

- 메모장에서 탭 공백 부분을 복사합니다.

- 키보드에서 Ctrl+H를 눌러 메모장의 찾기 및 바꾸기 창을 엽니다.
- 찾을 내용 입력창에 복사해 둔 탭 공백을 붙여넣습니다.
- 바꿀 내용 입력창에는 쉼표(,)를 입력합니다.
- 마지막으로 모두 바꾸기를 클릭합니다.

- 창을 닫으면 탭 공백이 모두 쉼표로 바뀌어, 쉼표로 구분된 값들을 가진 텍스트 파일이 완성됩니다.

- 마지막으로 파일 확장자를 직접 .csv로 변경합니다.

이런 방식으로 엑셀 파일을 CSV UTF-16으로 자동 변환할 수 있습니다.
함께 읽으면 좋은 글: 큰따옴표가 포함된 CSV로 엑셀 저장하기 (가장 간단한 3가지 방법)
방법 3: 여러 시트가 있는 엑셀 파일을 CSV로 변환하기
앞서 설명한 방법들은 모두 엑셀 파일을 CSV로 변환할 수 있지만, 한 번에 하나의 시트씩만 변환됩니다. 그런데 엑셀 파일에 수십 개의 시트가 있고 이를 전부 변환해야 한다면 어떻게 해야 할까요? 다행히 Microsoft VBA(Visual Basic for Applications)가 해결책을 제공합니다.
VBA 코드를 사용하려면 먼저 리본 메뉴에 개발 도구 탭이 있어야 합니다. 아직 활성화하지 않았다면 개발 도구 탭을 먼저 활성화하세요.
실습을 위해서는 앞서 소개한 두 개의 데이터 세트가 서로 다른 시트에 들어 있는 파일을 사용합니다(글 초반의 예제 파일을 다운로드했다면 이미 준비되어 있습니다).

엑셀 파일의 모든 시트를 CSV로 일괄 변환하려면 아래 단계를 따르세요.
단계:
- 리본 메뉴의 개발 도구 탭으로 이동한 뒤, 코드 그룹에서 Visual Basic을 선택합니다.

- VBA 창에서 삽입을 클릭한 후, 드롭다운 메뉴에서 모듈을 선택합니다.

- 모듈 안에 아래 코드를 입력합니다.
Sub Batch_Convert_CSV()
Dim wsht As Worksheet
Dim file_path As String
Application.ScreenUpdating = False
file_path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
For Each wsht In Worksheets
wsht.Copy
ActiveWorkbook.SaveAs Filename:=file_path & "_" & wsht.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close False
Next
Application.ScreenUpdating = True
End Sub- 코드 입력이 끝나면 파일을 저장하고 키보드의 F5 키를 눌러 코드를 실행합니다.
그러면 원본 엑셀 파일이 있는 폴더에 모든 시트가 각각 별도의 CSV 파일로 변환되어 저장됩니다.
아래는 첫 번째 시트가 변환된 CSV 파일입니다.

그리고 아래는 두 번째 시트의 변환 결과입니다.

주의할 점은, 이 일괄 변환 역시 방법 2에서 언급했듯이 유니코드 특수 문자가 깨질 수 있다는 것입니다. 데이터에 특수 문자가 포함되어 있다면 방법 2를 활용하세요.
함께 읽으면 좋은 글: 매크로로 여러 엑셀 파일을 CSV 파일로 변환하는 방법
마무리
지금까지 상황별로 엑셀 파일을 CSV로 자동 변환하는 다양한 방법을 살펴보았습니다. 이 글이 도움이 되었기를 바랍니다. 궁금한 점이나 제안 사항이 있다면 댓글로 알려주세요. 이런 심화 가이드가 더 필요하시면 Exceldemy.com을 방문해 보세요.
관련 글
- 여러 엑셀 파일을 CSV로 변환하는 방법 (3가지 실용적인 방법)
- 매크로로 엑셀을 파이프 구분 텍스트 파일로 변환하기 (3가지 방법)
- 엑셀 파일을 쉼표 구분 텍스트 파일로 변환하는 방법 (3가지 방법)
- [해결!] 엑셀에서 CSV 저장 시 쉼표가 사라지는 문제 (7가지 해결 방법)
- 엑셀을 열지 않고 CSV로 변환하는 방법 (4가지 쉬운 방법)