Skip to content
GwiyeomGo Tech Blog
About GwiyeomGo

react-csv 모듈로 파일 다운로드 만든 경험

JAVASCRIPT, REACT, 20223 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

  1. CSVLink 를 사용해서 [] 형태 데이터를 그대로 다운 받을 수 있었다.
  2. 그런데 기획쪽의 요청은 한글 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/

© 2024 by GwiyeomGo Tech Blog. All rights reserved.