엑셀 CSV에서 앞자리 0과 긴 번호를 지키는 가져오기 방법
메모장으로 열면 00072인 상품코드가 엑셀에서는 72로 보이고, 16자리 주문 번호는 뒷자리 숫자가 바뀌어 있다. 원본 그대로 가져오려면 어디서 무엇을 지정해야 할까?

상품코드 00072가 엑셀에서 72로 보인다면, 그 셀을 텍스트로 바꾸기 전에 원본 CSV부터 열어 보는 편이 빠르다. 메모장에서 원본에 00072가 남아 있다면 엑셀로 읽어 오는 과정에서 값이 바뀐 것이다. 원본을 다시 가져오면서 코드 열을 텍스트로 지정하면 다섯 글자를 유지할 수 있다.
문제는 숫자로 계산할 값과 숫자 모양의 식별번호를 엑셀이 같은 방식으로 해석할 때 생긴다. 수량 72개와 상품코드 00072는 쓰임이 다르다. 수량은 더하고 나눌 수 있지만 코드의 0 하나는 어느 상품인지를 나타내는 정보다. Microsoft의 선행 0·긴 번호 안내도 전화번호·제품코드 같은 값을 원형대로 유지하려면 텍스트로 다루도록 설명한다.
앞자리 0 손실과 긴 번호 손상
| 값의 용도 | CSV 예시 | 가져올 형식 | 그 이유 |
|---|---|---|---|
| 상품코드 | 00072 | 텍스트 | 앞의 0까지 코드에 포함된다. |
| 하이픈 없는 연락처 | 01012345678 | 텍스트 | 덧셈할 수량이 아닌 연락처다. |
| 16자리 주문 ID | 7316049281572469 | 텍스트 | 모든 자릿수를 그대로 비교해야 한다. |
| 수량 | 12 | 정수 | 합계나 재고 계산에 사용한다. |
앞자리 0이 없어지는 현상은 숫자 00072와 72를 같은 값으로 취급하기 때문에 생긴다. 긴 번호는 여기에 정밀도 문제가 더해진다. 엑셀 워크시트 숫자의 정밀도는 유효숫자 15자리이므로 16자리 이상 ID를 숫자로 받아들이면 끝부분이 달라질 수 있다. 열 너비를 넓혀 지수 표기를 없애더라도 이미 사라진 자릿수가 돌아오지는 않는다.
화면에 E+가 보인다는 사실만으로 모든 값이 손상됐다고 볼 수는 없다. 지수 표기는 숫자를 짧게 표시하는 방식이기도 하다. 실제 보존 여부는 원본 문자열과 셀의 값을 대조해 판단한다.
예를 들어 위 주문 ID와 끝자리만 다른 ID가 함께 들어 있다면, 두 코드의 차이는 마지막 글자에 있다. 원본의 각 글자를 그대로 남겨야 서로 다른 주문으로 조회할 수 있다. 이 용도에서는 긴 번호를 더 정밀한 계산용 숫자로 바꾸는 것보다 처음부터 문자로 가져오는 방법이 작업 목적에 맞다.
원본 CSV가 남아 있을 때의 복구
잘못 열린 파일을 아직 저장하지 않았다면 원본에 덮어쓰지 않고 닫는다. 파일 탐색기에서 CSV를 복사해 원본을 보관한 뒤, 메모장 같은 텍스트 편집기로 원본의 코드와 긴 번호를 읽는다. 이 단계에서는 저장하거나 문자열을 치환할 필요가 없다. 파일 안의 값이 정상이라면 엑셀의 잘못된 해석만 피해서 다시 읽으면 된다.
원본 CSV에도 이미 72만 있거나 긴 번호의 마지막 부분이 바뀌어 있다면, 가져오기 옵션으로 원래 값을 알아낼 수는 없다. 주문관리 서비스나 데이터를 보낸 담당자에게서 파일을 다시 받아야 한다. 엑셀에 표시된 값을 고친 뒤 저장하면서 원본까지 덮어쓴 경우에는 수정 전 파일이나 서비스의 원래 기록이 복구 근거가 된다.
모든 상품코드가 반드시 다섯 자리라는 규격이 있다면 72를 00072로 채우는 계산은 가능하다. 그러나 다섯 자리라는 규격을 모른다면 072인지 00072인지 알 수 없다. 뒷자리를 잃은 긴 주문 ID는 자릿수를 맞춰도 원래 주문을 식별하지 못하므로 원본 기록에서 다시 받아야 한다.
Windows 엑셀에서 텍스트로 가져오기
반복해서 받는 업무 CSV라면 데이터 → 텍스트/CSV에서로 가져오는 방식이 적합하다. CSV를 더블클릭하면 현재 기본 설정으로 각 열을 해석하지만, 가져오기 화면에서는 어떤 열이 코드인지 지정할 수 있다. 다음 절차는 Windows 데스크톱 Excel의 Power Query 경로를 기준으로 한다. Microsoft의 가져오기 안내에서도 로드 전에 데이터 변환을 선택해 내용을 편집할 수 있다고 설명한다.
- 빈 통합 문서를 열고 데이터 탭의 텍스트/CSV에서를 선택한 뒤 원본 파일을 지정한다.
- 미리보기에서 열이 올바로 나뉘는 구분자를 고른다. 한글이 깨지면 파일을 만든 쪽의 문자 인코딩에 맞춰 파일 원본을 선택한다.
- 데이터 형식 검색 항목이 있으면 데이터 형식 검색 안 함을 선택하고 데이터 변환으로 들어간다. 형식 감지를 끄면 열이 텍스트로 시작한다.
- 상품코드·연락처·주문 ID 열의 머리글 왼쪽 형식 아이콘을 누르고 텍스트를 선택한다. 수량처럼 계산할 열만 같은 메뉴에서 정수 등 알맞은 형식으로 바꾼다.
- 코드의 첫 글자와 마지막 글자가 원본과 같은지 보고 닫기 및 로드로 워크시트에 가져온다.
형식 검색을 끄는 항목과 구분자·인코딩 설정은 Text/CSV 연결 설명에 나와 있다. 호스트 제품이나 버전에 따라 미리보기 옵션이 다를 수 있다. 그 항목이 보이지 않아도 데이터 변환으로 들어가 자동 형식 변경 단계를 확인하고 코드 열을 텍스트로 지정할 수 있다.
예를 들어 상품코드, 주문 ID, 수량 세 열을 받았다면 앞의 두 열은 텍스트, 마지막 열은 정수로 만든다. 이렇게 해야 상품을 찾을 때는 코드가 그대로 비교되고, 총 주문 수량은 합계를 낼 수 있다. 모든 열을 무조건 숫자로 바꾸거나 무조건 문자로 두는 대신 업무에서 각 열에 할 연산을 기준으로 형식을 정하는 것이다.
텍스트로 바꿨는데도 0이 없을 때
Power Query 오른쪽의 적용된 단계에 변경된 유형(Changed Type)이 이미 들어 있을 수 있다. Power Query는 CSV처럼 형식 정보가 없는 자료를 읽을 때 값을 보고 열의 형식을 추정한다. Microsoft의 데이터 형식 설명에 따르면 이 자동 감지는 기본적으로 켜져 있고 형식 변경 단계를 만들 수 있다.
코드가 숫자로 바뀐 단계 뒤에 새 텍스트 변환 단계를 덧붙이면, 사라진 0을 되찾는 대신 숫자 72를 문자열 72로 바꾸게 된다. 첫 가져오기 과정에서 자동 생성된 숫자 변환 단계를 삭제하거나 해당 단계의 코드 열 형식을 텍스트로 수정한다. 형식 변경 대화상자가 기존 단계 바꾸기와 새 단계 추가를 제시하면, 코드의 첫 변환을 텍스트로 바꾸도록 기존 단계를 대체한다.
단계를 되돌렸을 때 원본의 00072가 다시 나타나면 그 상태에서 텍스트로 지정한다. 기존 쿼리를 수정하는 중이라면 뒤에 이어지는 계산도 볼 필요가 있다. 수량 열의 형식까지 함께 제거했다면 수량을 다시 숫자로 정해야 하고, 코드 열을 숫자로 계산하던 후속 단계는 목적에 맞게 바꿔야 한다.
Power Query의 정수(Whole Number)는 64비트 정수 형식으로, 범위 안에서 최대 19자리 정수를 담을 수 있다. 반면 워크시트의 숫자 정밀도는 유효숫자 15자리다. 쿼리 미리보기에서 긴 번호가 정확히 보이더라도 워크시트에 숫자로 적재하면 같은 자릿수를 보존하지 못할 수 있다. 식별번호는 쿼리에서 텍스트로 정하고 최종 로드까지 그 형식을 유지한다.
Microsoft 365·Excel 2024의 자동 변환 끄기
CSV를 열거나 다른 시스템의 값을 붙여넣는 일이 잦다면 자동 데이터 변환 설정도 도움이 된다. 지원 대상은 Windows와 Mac의 Microsoft 365용 Excel, Excel 2024다. Windows는 파일 → 옵션 → 데이터 → 자동 데이터 변환, Mac은 Excel → 환경설정 → 편집 → 자동 데이터 변환에서 바꾼다. 적용 범위와 경로는 Microsoft 공식 설정 안내에 명시돼 있다.
앞자리 0을 제거하고 숫자로 변환하는 항목을 끄면 0으로 시작하는 숫자 모양의 값이 텍스트로 남는다. 긴 숫자의 앞 15자리만 유지하는 항목을 끄면 16자리 이상 값도 텍스트로 보존한다. 두 항목은 별개이므로 전화번호와 긴 주문 ID를 함께 다룬다면 각각의 설정을 바꾼다.
이 설정을 바꾼 뒤에는 원본 데이터를 다시 가져와야 한다. 이미 손상된 셀을 고치는 기능은 아니다. 또한 자동 데이터 변환 설정은 Power Query 가져오기에 직접 적용되지 않는다. 따라서 설정을 껐더라도 데이터 탭에서 가져오는 쿼리에는 앞 절의 텍스트 형식을 지정해야 한다.
이 문제는 CSV에만 생기지 않는다. Reddit의 엑셀 이용자는 다른 플랫폼에서 복사해 온 값의 앞자리 0이 사라지고, 이후 조회 함수로 맞추기 어려워졌다고 호소했다. 외부의 텍스트 값을 붙여넣을 때는 대상 열을 선택하고 Ctrl+1의 셀 서식에서 텍스트로 정한 뒤 붙여넣는다. 코드 양쪽을 숫자로 바꾸어 맞추는 방식은 원래 코드의 차이까지 없앨 수 있다.
가져오기 마법사를 쓰는 화면이라면
Windows Excel에서 기존 텍스트 가져오기 마법사를 사용하는 경우에는 마지막 단계에서 코드 열마다 텍스트를 고른다. 메뉴가 숨겨져 있으면 파일 → 옵션 → 데이터의 레거시 데이터 가져오기 마법사 표시에서 텍스트 항목을 켠다. 이후 데이터 → 데이터 가져오기 → 레거시 마법사 → 텍스트에서 파일을 선택한다.
쉼표로 구분된 CSV라면 구분 기호로 분리된 형식을 선택하고 쉼표를 지정한다. 미리보기에서 열이 정상적으로 나뉜 뒤 각 코드 열을 눌러 텍스트 형식으로 설정하고 마친다. 공식 마법사 설명은 숫자로만 이뤄진 열도 텍스트 형식으로 가져올 수 있음을 안내한다.
CSV의 값을 큰따옴표로 감쌌다는 사실만으로 코드 열의 형식이 텍스트가 되는 것은 아니다. 따옴표는 값 안에 쉼표 등이 들어 있어도 하나의 필드로 읽게 하는 역할을 한다. 예를 들어 쉼표를 포함한 상품명은 따옴표로 한 칸에 묶을 수 있지만, 옆의 코드 열을 숫자로 해석할지는 별도의 형식 설정에 달려 있다.
다시 CSV로 저장해 전달하는 순서
가져오기 형식과 작업 내용을 남길 파일은 XLSX 통합 문서로 저장한다. 받는 시스템이 CSV를 요구할 때는 제출할 시트를 선택해 별도의 CSV 파일로 저장한다. Microsoft의 내보내기 안내에 따르면 CSV에는 현재 워크시트만 저장되며 통합 문서의 여러 기능을 그대로 담을 수 없다. 여러 시트 중 무엇을 내보냈는지가 결과 파일을 결정한다.
저장한 CSV를 검사할 때 다시 더블클릭해 엑셀로 열면 같은 자동 변환이 반복될 수 있다. 대신 텍스트 편집기로 열어 코드의 0과 긴 번호의 끝자리가 남았는지 읽는다. 주문 ID와 수량이 같은 줄에서 올바른 구분자로 나뉘는지, 한글 상품명이 정상인지도 이 파일에서 볼 수 있다.
예제의 결과 파일에는 상품코드 00072, 주문 ID 7316049281572469, 수량 12가 각각 원래 값대로 있어야 한다. 이 셋이 CSV 안에 정상인데 받는 사람이 엑셀로 열자 값이 달라진다면, 보낸 파일이 아니라 받는 쪽의 가져오기 방식에서 변환된 것이다. 그 경우에는 코드 열을 텍스트로 가져오도록 전달하거나, 수신자가 엑셀로 편집할 목적이라면 텍스트 값이 저장된 XLSX 작업본을 함께 보낸다.
CSV에는 엑셀의 열 형식 설정이 함께 전달되지 않는다. 반복 업무에서는 파일과 함께 ‘상품코드·주문 ID는 텍스트, 수량은 정수’라는 열 정의를 남기면 다음 담당자가 같은 방식으로 읽을 수 있다. 새 파일로 교체한 뒤에는 이전에 정상으로 보였던 행만 보지 않고, 새로 들어온 긴 코드와 0으로 시작하는 코드도 원본과 대조한다. 형식 설정은 반복할 수 있어도 매번 들어오는 값은 달라지기 때문이다.