개발가이드파일 변환JSON 데이터 EXCEL 파일 변환

JSON 데이터 EXCEL 파일 변환 API

명세 내보내기
OpenAPI 3.0.3Postman 컬렉션Markdown

JSON 배열 데이터를 보내면 시트 하나짜리 엑셀(XLSX) 파일로 돌려줍니다. 응답은 JSON이 아닌 XLSX 파일입니다.

POSThttps://apick.app/rest/json_to_excel
인증
Bearer 키
요청 형식
form-data
응답
JSON · 파일
경로
1개

왜 JSON 데이터 EXCEL 파일 변환인가

API 데이터, 버튼 하나로 엑셀 보고서가 됩니다

운영팀이 요청할 때마다 개발자가 데이터를 엑셀로 뽑아주는 일, 이제 끝내도 됩니다. JSON 데이터를 보내면 엑셀 파일로 변환해 다운로드 버튼 하나로 해결합니다.

도입 효과

  • 엑셀 추출 요청 개발 업무를 줄임
  • 관리자 화면 내보내기 기능 즉시 구현
  • 현업이 익숙한 형식으로 데이터 공유

이런 곳에서 많이 씁니다

  • 쇼핑몰 관리자 주문 내역 내보내기
  • CRM 고객 목록 엑셀 다운로드
  • 정산 시스템 월별 내역 파일 발행
가입하고 API 키 받기API 키 하나로 바로 호출 · 실패한 요청은 과금되지 않습니다

알아둘 점

이용 전 확인

주문·회원·정산 목록을 관리자에게 엑셀로 내려주거나, 조회 결과를 보고서용 파일로 저장할 때 사용합니다.

data_list는 두 가지 모양을 받습니다.

형식
설명
객체 배열
[{"상품명":"사과","수량":3}, …]. 첫 행에 컬럼 이름이 들어가고 그 아래에 값이 채워집니다. 컬럼 목록과 순서는 항목이 가장 많은 행을 기준으로 정해지므로 모든 행에 같은 컬럼 이름을 쓰세요. 없는 컬럼은 빈 칸이 됩니다.
2차원 배열
[["상품명","수량"],["사과",3]]. 보낸 그대로 행·열에 채워집니다. 모든 행의 칸 수가 같아야 하며 다르면 거절됩니다.

요금은 만들어진 셀 하나당 1P입니다. 객체 배열은 컬럼 이름 행도 셀 수에 들어갑니다(2행 × 3컬럼 객체 배열 = 3행 × 3열 = 9셀). 실패 응답은 과금되지 않습니다.

요청과 응답

API 요청
POST/rest/json_to_excel
  • Bearer 인증
  • multipart/form-data
  • 파일 응답
요청 파라미터 5개 · 필수 1
파라미터
설명
data_listarray필수
변환할 데이터 목록. 객체 배열 또는 2차원 배열 (2차원 배열은 모든 행의 열 개수가 같아야 함)
sheet_namestring선택
시트 이름. 생략하면 서버 기본 이름을 사용합니다. 문자열로 보내며, 생략하면 서버 기본값이 적용되거나 해당 조건이 해제됩니다.
예시
주문목록
data_list[0][0]string조건부
엑셀로 변환할 2차원 배열의 첫 행·첫 셀 값입니다. 모든 행의 열 개수가 같아야 하며, 첫 행은 보통 제목으로 사용됩니다.
data_list[0][컬럼명]string조건부
객체 배열의 셀. 모든 행에 같은 컬럼 이름을 사용하는 것을 권장합니다. 숫자처럼 보이는 문자열도 그대로 보존됩니다.
__apick_type[data_list][0][컬럼명]string선택
셀 타입 지정. 생략하면 string. number·boolean은 해당 값을, null·빈 array·빈 object는 빈 폼 값을 함께 보냅니다. 숫자 이름의 객체 열은 __apick_type[data_list][0]=object로 행 타입도 지정하세요. 비어 있지 않은 컨테이너는 타입과 하위 필드만 보냅니다. 가능한 값은 6가지입니다. string = 문자열 셀로 전송하는 값입니다. 숫자·날짜처럼 보여도 문자 그대로 저장됩니다. number = 숫자 셀로 전송하는 값입니다. 앞자리 0·천 단위 구분은 사라집니다. boolean = TRUE/FALSE 셀 값으로 전송하는 값입니다. 문자열 "true"와 다릅니다. null = 빈 셀(null)로 전송하는 값입니다. 빈 문자열과 구분됩니다. array = 배열(목록) 셀로 전송하는 값입니다. 하위 항목을 여러 개 가질 수 있습니다. object = 객체(구조) 셀로 전송하는 값입니다. 하위 필드를 이름으로 가집니다.
허용값
string number boolean null array object
응답 필드 파일

정상 응답은 파일 본문입니다. 실패 시 JSON 오류가 올 수 있으므로 HTTP 상태와 Content-Type을 먼저 확인하세요.

입력 조건·전송 규칙
항목
설정
메서드·주소
POST https://apick.app/rest/json_to_excel
인증 헤더
Authorization: Bearer 내 계정의 API 인증키
본문 형식
application/json 또는 multipart/form-data

form-data로 보낼 때는 셀마다 data_list[0][상품명]=사과처럼 경로를 이름으로 씁니다. 값은 기본적으로 문자 셀로 저장되며, 숫자 셀로 저장하려면 __apick_type[data_list][0][수량]=number를 함께 보내세요. 아래 JSON 예시를 그대로 쓰면 숫자 값에 이 표시가 자동으로 붙습니다.

요청 예시

사용 예시

상황별로 보내는 값과 응답에서 확인할 값을 모았습니다. 언어 탭에서 그대로 복사해 쓸 수 있습니다.

예시 1. 주문 목록을 엑셀로

객체 배열을 보내면 첫 행에 컬럼 이름이, 그 아래에 값이 채워집니다. 숫자 값에는 숫자 셀 표시가 함께 붙습니다.

요청POST/rest/json_to_excel
curl --fail-with-body --request POST 'https://apick.app/rest/json_to_excel' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string '__apick_type[data_list]=array' \
  --form-string '__apick_type[data_list][0]=object' \
  --form-string 'data_list[0][상품명]=사과' \
  --form-string '__apick_type[data_list][0][수량]=number' \
  --form-string 'data_list[0][수량]=3' \
  --form-string '__apick_type[data_list][0][단가]=number' \
  --form-string 'data_list[0][단가]=1200' \
  --form-string '__apick_type[data_list][1]=object' \
  --form-string 'data_list[1][상품명]=배' \
  --form-string '__apick_type[data_list][1][수량]=number' \
  --form-string 'data_list[1][수량]=2' \
  --form-string '__apick_type[data_list][1][단가]=number' \
  --form-string 'data_list[1][단가]=2500' \
  --form-string 'sheet_name=주문목록' \
  --dump-header response.headers --output result.xlsx
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.
  • 응답 Content-Type이 XLSX이면 output.xlsx로 저장합니다.
  • 응답 헤더 cost는 셀 수(컬럼 이름 행 포함) × 셀당 요금입니다.
예시 2. 수량을 문자 셀로 저장

상품 코드처럼 앞자리 0을 지켜야 하는 값은 숫자 셀 표시를 빼고 문자로 보냅니다.

요청POST/rest/json_to_excel
curl --fail-with-body --request POST 'https://apick.app/rest/json_to_excel' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string '__apick_type[data_list]=array' \
  --form-string '__apick_type[data_list][0]=object' \
  --form-string 'data_list[0][상품명]=사과' \
  --form-string '__apick_type[data_list][0][단가]=number' \
  --form-string 'data_list[0][단가]=1200' \
  --form-string '__apick_type[data_list][1]=object' \
  --form-string 'data_list[1][상품명]=배' \
  --form-string '__apick_type[data_list][1][단가]=number' \
  --form-string 'data_list[1][단가]=2500' \
  --form-string 'sheet_name=주문목록' \
  --form-string 'data_list[0][수량]=003' \
  --form-string 'data_list[1][수량]=002' \
  --dump-header response.headers --output result.xlsx
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.
  • 숫자 셀 표시가 없는 값은 보낸 문자 그대로 저장됩니다.
예시 3. 시트 이름 생략

시트 이름이 필요 없으면 빼고 보냅니다. 기본 시트 이름이 붙습니다.

요청POST/rest/json_to_excel
curl --fail-with-body --request POST 'https://apick.app/rest/json_to_excel' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string '__apick_type[data_list]=array' \
  --form-string '__apick_type[data_list][0]=object' \
  --form-string 'data_list[0][상품명]=사과' \
  --form-string '__apick_type[data_list][0][수량]=number' \
  --form-string 'data_list[0][수량]=3' \
  --form-string '__apick_type[data_list][0][단가]=number' \
  --form-string 'data_list[0][단가]=1200' \
  --form-string '__apick_type[data_list][1]=object' \
  --form-string 'data_list[1][상품명]=배' \
  --form-string '__apick_type[data_list][1][수량]=number' \
  --form-string 'data_list[1][수량]=2' \
  --form-string '__apick_type[data_list][1][단가]=number' \
  --form-string 'data_list[1][단가]=2500' \
  --dump-header response.headers --output result.xlsx
# response.headers의 Content-Type을 확인한 뒤 파일을 사용하세요.
  • data_list가 비어 있거나 행이 객체·배열이 아니면 입력 항목이 잘못됐습니다.로 거절됩니다.

응답 처리

HTTP 성공과 업무 결과를 구분하세요. 경로별 응답 필드와 예시는 위 요청과 응답에 함께 있습니다.

성공하면 XLSX 본문이 바로 옵니다. 내려받기 파일명은 output.xlsx입니다.

원문 응답 필드 표 보기
응답 헤더
필드
타입
설명
success
integer
1이면 파일 생성에 성공한 것입니다.
cost
integer
이번 요청에서 차감된 포인트입니다(셀 수 × 셀당 요금).
ms
integer
처리 시간(밀리초)입니다.
Content-Type
string
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

오류 코드

응답을 아래 순서로 확인하세요. 결과 유무와 과금 여부는 서로 다릅니다.

  1. HTTP 상태전송·인증·입력 오류
  2. api.successAPI 처리 여부
  3. data · result업무 결과와 오류 문구
  4. api.cost이번 요청의 과금
서비스 코드·조건

오류와 대처

실패하면 파일 대신 JSON이 옵니다. HTTP 상태와 Content-Type을 먼저 확인하고, JSON이면 data.error 문구를 기록하세요. 실패 응답의 api.cost는 0입니다.

HTTP
data.error
대처
400
입력 항목이 잘못됐습니다.
data_list가 비어 있지 않은 배열인지, 각 행이 객체 또는 배열인지, 2차원 배열의 칸 수가 모두 같은지 확인하세요.
424
알 수 없는 이유로 실패했습니다.
시트 이름은 엑셀 규칙(31자 이하, \ / ? * [ ] : 제외)에 맞추고 다시 요청하세요.
인증·포인트 오류 result.error 문구
코드
HTTP
의미·조치
유효하지 않은 API키 입니다.
401
Authorization: Bearer 헤더의 인증키를 확인하세요.
허용되지 않은 IP주소 입니다.
401
마이페이지의 허용 IP 설정과 요청 서버 IP를 확인하세요.
비활성화된 계정입니다.
401
계정 이용 상태를 고객지원으로 문의하세요.
사용 가능한 포인트이 부족합니다.
200
HTTP 200이어도 result.error가 있으면 실패입니다. 포인트를 충전한 뒤 다시 요청하세요. 이 응답은 과금되지 않습니다.
인증 정보를 확인할 수 없습니다.
424
일시적인 확인 실패입니다. 잠시 후 다시 시도하세요.
폼 입력 오류 error.code
코드
HTTP
의미·조치
FORM_DATA_INVALID
400
필드 이름·값의 타입·배열 인덱스를 확인하세요. 인덱스는 0부터 연속으로 사용합니다.
FORM_DATA_FIELD_CONFLICT
400
같은 값과 중첩 경로를 동시에 지정하지 마세요.
MULTIPART_LIMIT_OR_PARSE_ERROR
400·413
boundary·파일 크기·필드 개수를 확인하세요. 서비스별 제한이 우선 적용됩니다.

요금·이용 조건

기본 요금기본 단가 1P · 셀당

실제 차감 금액은 응답의 api.cost로 확인하세요. 상세 요금은 요금정책에서 볼 수 있습니다.

연동 팁

  • 요청 예제의 오류 처리 포함 모드는 시간 제한과 업무 실패 판정을 함께 보여줍니다.
  • 인증키는 서버 환경변수에 두고 브라우저·앱에 넣지 마세요.
  • HTTP 성공과 업무 결과를 구분하고, 실패 응답의 오류 문구를 그대로 기록하세요.
추가 예제·서비스별 연동 안내

호출 예시

같은 요청을 JavaScript와 Python으로 옮긴 예시입니다. 키는 환경변수 APICK_API_KEY 에서 읽습니다.

JavaScript 예시
Python 예시

개발가이드 검색

API 이름·경로·파라미터·오류 코드로 찾을 수 있습니다.

표시 가격은 기본 단가입니다. 상세 과금 조건은 각 가이드에서 확인하세요.