react-csv 모듈로 파일 다운로드 만든 경험
— JAVASCRIPT, REACT, 2022 — 3 min read
배경
1.어드민에서 화면에 목록을 다운받고 싶은 요구 발생
작업내용
파일 다운로드
방법1
현재 저의 코드에서는 react-csv 컴포넌트를 import 받아서 사용합니다.
import { CSVLink } from "react-csv";
headers = [ { label: "First Name", key: "firstname" }, { label: "Last Name", key: "lastname" }, { label: "Email", key: "email" }];
data = [ { firstname: "Ahmed", lastname: "Tomi", email: "ah@smthing.co.com" }, { firstname: "Raed", lastname: "Labes", email: "rl@smthing.co.com" }, { firstname: "Yezzi", lastname: "Min l3b", email: "ymin@cocococo.com" }];
<CSVLink data={data} filename={"my-file.csv"} headers={headers}> Download me</CSVLink>;
출처 : https://www.npmjs.com/package/react-csv
- CSVLink 를 사용해서 [] 형태 데이터를 그대로 다운 받을 수 있었다.
- 그런데 기획쪽의 요청은 한글 name을 추가를 요청했다.
//2개 [] 을 [{},{}]로 변환export const makeCsvHeaders = (headerValues,dataKeys) => { let fileHeader = new Array(dataKeys.length) dataKeys.length > 0 && dataKeys.forEach((key,index) => fileHeader[index] ={ key:key, label: headerValues[index] }); return fileHeader}
참고
https://www.npmjs.com/package/react-csv
CSVLink 라이브러리로 엑셀 파일을 만들면 0 이 사라지는 문제
enforce the decimal format for csv
배경
CSVLink 라이브러리를 사용해서 csv 파일 다운로드 기능을 개발했다
문제는 data의 값이 0 으로 시작하면 엑셀파일 실행시 0 이지워지는 문제가 있었다
ex) 후대번호 010-****-**** 의 경우 10-****-**** 으로 보임
https://ecsupport.cafe24.com/article/%EC%87%BC%ED%95%91%EB%AA%B0-tip/101/1089/?page=8
010**** 형태는 숫자로 엑셀이 숫자라 판단해서 맨앞에 0을 지웠다 엑셀에서 0이보이면서 문자로 바꿔주기 위해 =" " 를 추가하는 작업을 진행했었습니다.
해결방법
data 에 obj 를 돌
=""${value}""
로 바꿔줌
#문제2 해당 엑셀파일은 우체국 택배 예약 사이트에 업로드할 엑셀에 사용자가 복사에서
휴대번호 => ex) 010-3480-4314 우편번호 => ex) 58654 앞에 특 정 문자를 넣어 (58654)
지금 작업할 수 있는 방법은
위 두 예시처럼 특정 문자를 넣어서
문자 형태로 변경해야 합니다.
010-3480-4314
, (58654)
형태로 변경하면 괜찮을까요?
참고
https://stackoverflow.com/questions/65008344/enforce-the-decimal-format-for-csv
https://www.daleseo.com/css-buttons/ https://stackoverflow.com/questions/53504924/reactjs-download-csv-file-on-button-click https://encredible.tistory.com/entry/react-csv%EC%97%90%EC%84%9C-onClick-%EC%8B%9C%EC%A0%90%EC%97%90-async%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-%EB%B0%9B%EC%95%84-%EC%98%A4%EB%8A%94-%EB%B0%A9%EB%B2%95 https://www.geeksforgeeks.org/how-to-add-a-pressed-effect-on-button-click-in-css/