주문 엑셀 합치기 데모는 어떻게 만들었나: 파일을 올리지 않는 구조
주문 엑셀 합치기 데모는 파일을 서버로 보내지 않고 브라우저 안에서 읽습니다. 판매처는 열 이름으로 알아보고, 같은 사람에게 가는 주문은 한 박스로 묶습니다.

루코 웍스의 주문 엑셀 합치기 데모는 방문자가 넣은 주문 파일을 서버로 보내지 않고 브라우저 안에서만 읽습니다. 판매처 판별, 열 이름 맞추기, 같은 사람 주문 묶기, 택배 접수 파일과 판매처별 송장 파일 만들기까지 모두 방문자 PC에서 끝납니다. 이 글은 데모를 그렇게 만든 이유와 각 단계가 실제로 어떻게 동작하는지, 실제 구축에서는 무엇이 달라지는지를 정리한 기술 노트입니다.
파일을 서버로 올리지 않으면 무엇이 달라지나요?
주문 엑셀에는 받는 분 이름, 전화번호, 주소가 들어 있습니다. 이 파일을 업체 서버로 올리는 구조라면 업체가 고객 정보를 받는 셈이 되고, 쇼핑몰은 개인정보 처리 위탁 계약과 처리방침 공개를 챙겨야 합니다. 이 내용은 개인정보 항목 글에서 자세히 다뤘습니다.
데모는 웹 페이지가 브라우저 안에서 파일을 열어 읽는 방식(FileReader)을 씁니다. 엑셀을 해석하는 공개 라이브러리(SheetJS)도 페이지와 함께 브라우저에 내려와 돌아갑니다. 그래서 파일 내용이 네트워크로 나가는 단계가 없습니다. 창을 닫으면 읽은 주문도 사라집니다.
화면에 표를 띄울 때도 받는 분 이름과 전화번호 가운데 부분은 별표로 가립니다. 옆자리 사람이 화면을 보거나 화면을 캡처해 공유하는 상황을 생각한 처리입니다. 내려받는 결과 파일에는 원래 값이 그대로 들어갑니다. 택배 접수에 실제 연락처가 필요하기 때문입니다.
TIP자동화 업체에 "우리 고객 정보가 어디까지 가나요?"라고 물었을 때 업무별로 처리 위치를 답할 수 있는지 보세요. 브라우저 안, 회사 계정 안, 업체 서버로 나눠서 답하는 업체가 관리하기 쉽습니다.
어느 판매처 파일인지 알아보는 방법
파일 이름은 직원마다 바꿔 저장하기 때문에 믿지 않습니다. 데모는 열 이름을 보고 판매처를 판별합니다. 판매처마다 그 판매처 파일에만 있는 열 이름 조합을 정해 두고, 그 조합이 모두 있는 파일을 해당 판매처 파일로 봅니다.
| 판매처 | 판별에 쓰는 열 이름 |
|---|---|
| 스마트스토어 | 상품주문번호, 수취인명, 옵션정보 |
| 쿠팡 | 묶음배송번호, 수취인이름 |
| 카페24 | 품목별 주문번호, 수령인 |
어떤 파일은 맨 위에 안내 문구가 한두 줄 붙어 있고 그 아래에 열 이름이 나옵니다. 그래서 데모는 첫 줄을 열 이름으로 가정하지 않고, 앞쪽 10줄 가운데 판매처별 열 이름이 가장 많이 맞는 줄을 제목 줄로 고릅니다. 판별이 안 되면 "어느 판매처 파일인지 알아보지 못했습니다"라고 띄우고 그 파일은 합치기에서 뺍니다.
판매처가 엑셀 양식을 바꾸면 어떻게 되나요?
판매자센터 엑셀은 예고 없이 열 이름이 조금씩 바뀝니다. "배송메세지"가 "배송메시지"로 바뀌거나, 띄어쓰기가 들어가거나, 상품명 열 이름이 달라지는 식입니다. 열 위치를 숫자로 고정해 두는 매크로는 이런 변화에 바로 멈춥니다.
데모는 열 위치 대신 열 이름으로 찾고, 같은 항목에 비슷한 이름을 여러 개 등록해 둡니다. 비교할 때는 공백을 모두 지우고 봅니다.
| 항목 | 등록해 둔 이름(예) |
|---|---|
| 스마트스토어 연락처 | 수취인연락처1, 수취인 연락처1, 수취인연락처 |
| 쿠팡 상품명 | 등록상품명, 노출상품명(옵션명), 노출상품명 |
| 쿠팡 수량 | 구매수(수량), 구매수, 수량 |
| 배송 메시지 | 배송메세지, 배송메시지 |
그래도 필수 열을 못 찾으면 파일 목록에 "못 찾은 열: ○○"을 적어 보여 줍니다. 옵션, 우편번호, 배송 메시지는 비어 있어도 진행하고, 주문번호나 받는 분처럼 빠지면 안 되는 열만 경고합니다. 양식이 바뀌었을 때 틀린 결과를 조용히 내놓으면 담당자가 알아챌 방법이 없어서, 어디가 안 맞는지부터 알려 줍니다.
한글 CSV는 저장 방식에 따라 글자가 깨지는 경우가 있어서, 데모는 한국어 윈도우 엑셀이 쓰는 문자 코드(CP949)로 읽도록 설정했습니다. 판매처별 파일 차이는 주문 엑셀 합치기 글에 표로 정리해 두었습니다.
암호 걸린 엑셀 처리
스마트스토어 주문 엑셀은 판매자가 정한 비밀번호가 걸린 채로 내려받는 경우가 많습니다. 암호가 걸린 .xlsx 파일은 일반 엑셀과 저장 형식이 다르고, 파일 맨 앞 몇 바이트가 다른 형식의 표시로 시작합니다. 데모는 이 표시를 보고 암호 파일인지 먼저 확인합니다.
암호 파일이면 "엑셀에서 열어 암호 없이 다시 저장한 뒤 넣어 주세요"라는 안내를 띄웁니다. 데모는 비밀번호를 입력받아 푸는 기능을 넣지 않았습니다. 그냥 "읽기 실패"라고만 띄우면 담당자는 파일이 깨졌는지, 양식이 틀렸는지 알 수 없습니다. 원인을 짚어 주는 안내 한 줄이 문의 전화를 줄입니다.
같은 사람에게 가는 주문은 어떻게 한 박스로 묶나요?
판매처가 다르더라도 같은 사람에게 같은 날 보내는 주문은 한 박스로 보내면 택배비와 포장 시간이 줄어듭니다. 데모는 받는 분 이름, 전화번호, 주소 세 값을 합쳐 묶음 기준을 만듭니다. 공백과 전화번호의 하이픈은 지우고 비교합니다.
기준이 같은 주문은 한 박스가 되고 "LW0001" 같은 박스 번호를 받습니다. 두 건 이상 묶인 박스는 화면에서 "합포장 2" 같은 표시로 보입니다. 예시 파일에서는 쿠팡 주문 1건과 스마트스토어 주문 1건이 같은 사람에게 가서 한 박스로 묶이는 것을 볼 수 있습니다.
이 기준은 일부러 엄격하게 잡았습니다. 주소를 "101동 1203호"와 "101-1203"처럼 다르게 적으면 묶이지 않습니다. 다른 사람 주문을 잘못 합쳐 보내는 사고가 묶지 못한 손해보다 크기 때문입니다. 느슨한 규칙을 쓸지는 회사마다 판단이 다르므로 실제 구축에서 정합니다.
TIP합포장 기준을 정할 때는 "놓쳐도 되는 경우"와 "절대 잘못 묶으면 안 되는 경우"를 먼저 적어 보세요. 선물 주문처럼 받는 분과 주문자가 다른 경우가 많은 쇼핑몰이라면 기준을 더 엄격하게 두는 편이 낫습니다.
결과로 나오는 파일
| 파일 | 내용 | 비고 |
|---|---|---|
| 합친 주문 엑셀 | 박스번호, 판매처, 주문번호, 상품, 받는 분 등 한 시트 | 확인·보관용 |
| CJ대한통운 일괄 접수 파일 | 박스마다 한 줄, 품목명은 묶인 상품을 이어 붙임 | 박스 번호를 고객주문번호 칸에 넣음 |
| 판매처별 송장 등록 파일 | 스마트스토어, 쿠팡, 카페24 각각 따로 | 송장번호를 주문마다 붙임 |
송장 단계에서는 택배사가 돌려준 파일의 "고객주문번호"(데모가 붙인 박스 번호)와 "운송장번호" 열을 맞춰, 박스 하나의 송장번호를 그 박스에 든 주문 전부에 붙입니다. 그런 다음 판매처마다 올리는 파일을 따로 만듭니다. 스마트스토어는 판매자센터 엑셀 일괄발송에 올리는 열 구성이고, 쿠팡은 실제로는 Wing에서 받은 원본 파일의 "운송장번호" 칸을 채워 올립니다. 카페24는 쇼핑몰마다 양식을 직접 정하므로 실제 구축 때 맞춥니다. 데모의 예시 송장번호는 실제 택배와 연결되지 않은 가짜 번호입니다.
실제 구축에서 달라지는 점
데모는 흐름을 보여 주려고 만든 것이라, 실제 회사 업무에 들어갈 때는 아래 항목을 다시 확인합니다.
- 실제 판매처 양식 확인: 고객사 판매자센터에서 내려받은 원본 파일로 열 이름과 형식을 다시 맞춥니다. 카페24처럼 판매자가 항목을 고르는 판매처는 특히 그렇습니다.
- 택배사 계약 양식: 데모의 접수 파일 열 구성은 일반형입니다. 계약한 택배사 양식에 맞춰 바꿉니다.
- 계정과 권한: 판매처가 외부 개발사의 API 연동을 허용하면 파일을 내려받는 단계부터 없앨 수 있습니다. 이때 키는 고객사 명의로 발급받습니다. 허용하지 않는 판매처는 지금처럼 엑셀로 처리합니다.
- 회사별 예외 규칙: 합포장 규칙, 상품명 줄임 규칙, 사은품 끼워 넣기처럼 회사마다 다른 규칙을 반영합니다.
- 사람이 확인하는 지점: 주소가 이상하거나 옵션이 빈 주문은 따로 모아 보여 주고, 담당자가 확인한 뒤에 접수 파일에 넣습니다.
우리 쇼핑몰 주문 파일로 어디까지 맞출 수 있는지 궁금하다면 개인정보 열을 지운 사본 몇 개로 무료 진단 때 직접 돌려 보여 드립니다.
자주 묻는 질문
데모에 실제 주문 파일을 넣어도 루코 웍스가 볼 수 있나요?
볼 수 없습니다. 파일은 방문자 브라우저 안에서만 읽고 서버로 전송하지 않습니다. 창을 닫으면 읽은 내용도 함께 사라집니다.
스마트스토어에서 받은 암호 걸린 엑셀은 왜 안 열리나요?
암호가 걸린 엑셀은 일반 엑셀 파일과 저장 형식이 달라서 데모가 내용을 읽지 못합니다. 데모는 이런 파일을 알아보고 엑셀에서 열어 암호 없이 다시 저장해 달라고 안내합니다.
같은 사람 주문인데 박스가 둘로 나뉘었습니다. 왜 그런가요?
데모는 받는 분 이름, 전화번호, 주소가 모두 같을 때만 한 박스로 묶습니다. 주소를 판매처마다 조금 다르게 적었다면 따로 나뉘므로, 실제 구축에서는 회사의 합포장 규칙을 정해 반영합니다.
데모에서 만든 택배 접수 파일을 그대로 써도 되나요?
데모 파일은 일반적인 일괄 접수 열 구성을 씁니다. 택배사마다 계약 양식이 다르기 때문에 실제로 쓰려면 계약한 택배사 양식에 맞춰 열 순서와 이름을 바꿔야 합니다.