CSV를 열었더니 한글이 깨지거나 상품코드 00123이 123으로 보일 수 있습니다. 문자 인코딩과 열의 데이터 형식은 따로 확인해야 합니다. UTF-8을 선택하는 것은 글자를 읽는 방법에 관한 설정이고, 상품코드를 텍스트로 지정하는 것은 앞자리 0을 포함한 식별자를 보존하기 위한 설정입니다.

이 글은 Windows용 Microsoft 365 Excel의 텍스트/CSV 가져오기를 기준으로 설명합니다. 버전에 따라 메뉴 이름은 조금 다를 수 있습니다. 예제는 상품 목록 두 행이며, 입력할 CSV부터 가져온 뒤 대조할 값, 저장 후 다시 확인하는 방법까지 본문에서 따라갈 수 있습니다.

본문 작성과 DEV용 재구성에 AI를 사용했습니다. 예제는 직접 구성한 합성 자료이며, UTF-8 CSV의 행·열·문자열과 수량 합계는 Python으로 검산했습니다. 실제 Excel 앱에서 가져오기·저장·화면 표시를 시험한 결과는 아닙니다. 아래 표도 앱 화면을 캡처한 것이 아니라 원래 값과 대조하기 위해 작성한 예상 결과입니다.

1. 연습 파일의 원래 값을 먼저 정하기

아래 세 줄을 메모장 같은 텍스트 편집기에 붙여 넣고 UTF-8 인코딩의 연습.csv로 저장합니다. 원본 파일은 별도로 보관하세요.

상품코드,상품명,수량 00123,노트,2 00456,연필,12 

첫 줄은 열 이름이고, 데이터는 두 행·세 열입니다. 확인할 값은 상품코드 00123과 00456, 상품명 노트와 연필, 수량 2와 12입니다.

상품코드는 계산할 숫자가 아니라 식별용 문자열입니다. 상품명도 텍스트로 두고, 계산에 쓸 수량만 숫자로 가져옵니다. 코드에 숫자만 들어 있다고 해서 수량과 같은 형식을 지정하지 않습니다.

2. 가져오기에서 인코딩과 열 형식을 각각 지정하기

  1. 빈 통합 문서에서 데이터 → 텍스트/CSV에서를 선택하고 연습.csv를 고릅니다. 메뉴가 접혀 있으면 데이터 가져오기 → 파일에서 아래를 확인합니다.
  2. 원본을 UTF-8로 만들었으므로 미리 보기의 파일 원본에서 UTF-8을 선택합니다. 한글 노트, 연필이 올바르게 보이는지 확인합니다.
  3. 구분 기호를 쉼표로 맞추고 세 열로 나뉘는지 확인합니다.
  4. 데이터 형식 검색을 자동 검색하지 않는 옵션으로 바꿉니다. 모든 열을 텍스트로 시작한 뒤 데이터 변환을 선택합니다.
  5. Power Query 편집기에서 상품코드 열의 데이터 형식이 텍스트이고 00123, 00456의 앞자리 0이 남아 있는지 확인합니다. 상품명은 텍스트로 두고 수량 열만 정수로 바꿉니다.
  6. 첫 행이 상품코드, 상품명, 수량이라는 열 이름으로 잡혔는지도 확인한 뒤 닫기 및 로드를 선택합니다.

Microsoft의 Text/CSV 커넥터 안내는 파일 원본, 구분 기호, 데이터 형식 검색을 각각 지정하는 방법을 설명합니다. 이 예제에서는 세 설정을 나누어 확인하는 것이 핵심입니다.

가져온 뒤에는 다음 값과 비교합니다. 코드는 텍스트, 상품명은 텍스트, 수량은 정수로 사용하는 예제입니다.

상품코드 — 텍스트 상품명 — 텍스트 수량 — 정수
00123 노트 2
00456 연필 12

코드가 이미 123으로 바뀌었다면 마지막 단계에서 텍스트로 바꾸는 것만으로 00123이 복원되지는 않습니다. 숫자 123을 텍스트로 바꾼 결과는 123이며, 사라진 0의 개수까지 알 수는 없습니다. 원본에 0이 남아 있는지 확인하고, 자동 형식 검색을 끈 상태로 다시 가져옵니다.

3. 편집용 통합 문서와 전달용 CSV를 나누기

편집용 파일은 .xlsx로 보관합니다. 전달할 복사본은 파일 → 다른 이름으로 저장에서 CSV UTF-8 형식으로 저장합니다. UTF-8이라는 글자가 없는 CSV 형식과 혼동하지 마세요.

Microsoft의 CSV 관련 안내에도 CSV UTF-8 저장 형식이 제시되어 있습니다. CSV는 활성 시트의 값 중심으로 저장되므로 여러 시트와 셀 서식을 그대로 보관하는 용도로 쓰기 어렵습니다. 원래 .xlsx를 CSV로 덮어쓰지 말고, 전달할 시트를 선택해 복사본으로 저장합니다.

4. 저장한 파일도 한글과 코드로 나누어 확인하기

저장한 CSV를 텍스트 편집기로 열어 00123, 00456과 한글이 그대로인지 확인합니다. Excel에서 다시 볼 때도 위의 텍스트/CSV 가져오기 절차를 사용합니다.

UTF-8로 저장했어도 다시 열면서 숫자 자동 변환이 일어나면 앞자리 0이 사라져 보일 수 있습니다. 한글이 정상이라는 이유로 코드도 보존됐다고 판단하지 않습니다.

이번 예제의 확인 기준은 다음과 같습니다.

  • 열 이름을 제외한 데이터는 2행, 열은 3개입니다.
  • 상품코드는 텍스트 00123, 00456으로 유지됩니다.
  • 상품명은 노트, 연필로 읽힙니다.
  • 수량은 정수 2, 12이며 합계는 14입니다.

Python 검산에서는 본문의 CSV를 UTF-8로 읽고 위 값과 구조, 2 + 12 = 14를 대조했습니다. 또 00123을 정수로 바꾼 뒤 문자열로 되돌리면 123이 된다는 점을 확인했습니다. 이는 자료형 변환에 따른 값의 차이를 보여 주는 검사이며 Excel의 실제 가져오기 동작을 실행한 검사는 아닙니다.

다른 곳에서 받은 파일이라면 원래 인코딩을 먼저 확인합니다. 글자가 깨진 상태로 원본을 저장하지 말고, 원본을 보존한 채 가져오기 설정을 다시 확인하세요.

참고 자료

원문: CSV 한글 깨짐과 앞자리 0을 함께 확인하는 엑셀 가져오기