-
[expo] [react native] make .csv fileFrontend/react-native 2019. 9. 23. 20:34
헬스앱을 만들면서
sqlite에 저장된 데이터를
.csv 파일 export 해서 메일로 보낼려고 한다.
작성 코드는 아래와 같다.
let rows = [ ["종목명", "세트번호", "무게", "반복횟수", "휴식시간", "볼륨", "날짜"] ]; let csvContent = "\uFEFF"; // 한글 깨짐 방지 // sql 결과값을 배열값으로 rows에 푸시 async insertCsvRows(rows, records) { try { await records.forEach(function(record) { const arrayOne = [`${record.종목명}`,`${record.세트번호}`,`${record.무게}`,`${record.반복횟수}`,`${record.휴식시간}`,`${record.볼륨}`,`${record.날짜}`] rows.push(arrayOne); }); return rows; } catch(e) { ... } } // csv 컨텐츠 생성 async makeCsvContent(rows, csvContent) { try { await rows.forEach(function(rowArray) { let row = rowArray.join(","); csvContent += row + "\r\n"; }); return csvContent; } catch(e) { ... } } // csv 파일 생성 async makeCsvFile(csvContent) { try { const tempname = "파일명"; const fileUri = await FileSystem.documentDirectory + tempname + ".csv"; await FileSystem.writeAsStringAsync(fileUri, csvContent, {encoding: `FileSystem.EncodingType.UTF8`}); return fileUri; } catch(e) { ... } } rows = await this.insertCsvRows(rows, _array); // _array는 sqlite에서 select한 결과값들 csvContent = await this.makeCsvContent(rows, csvContent) const uri = await this.makeCsvFile(csvContent);
메일로 전송한 파일을 열어보면 아래와 같다.
후..
이제 이걸 다시 import 해야한다.
'Frontend > react-native' 카테고리의 다른 글
[expo] react-native android 빌드시 아이콘(icon) 특수문자 깨짐 현상 해결 (0) 2019.10.17 [expo] vector icon (0) 2019.10.15 [expo][react native] <NumericInput /> re-render issue 해결 (0) 2019.09.20 [react native] 안드로이드 상태바 겹침 현상 해결 (Android header is overlapped) (0) 2019.09.04 [react native] icon list (link) (0) 2019.08.14