(코틀린) 엑셀 데이터를 FireStore에 추가하기
- 안드로이드 개발/Kotlin으로 어플 만들기
- 2019. 8. 25. 16:49
Firebase에는 데이터베이스로 두 가지 종류가 있습니다.
1. Realtime Database : 연결된 모든 클라이언트에서 실시간으로 데이터를 저장하고 동기화할 수 있습니다. 2. Cloud FireStore : 더욱 강력한 쿼리와 자동 확장 기능을 갖춘 차세대 실시간 데이터베이스입니다. |
요약하자만, Cloud FireStore는 Realtime Database의 업그레이드 버전인 셈이죠.
앞으로도 더욱 발전 가능성이 있다고 하니,
이제 시작하시는 분들은 FireStore로 데이터베이스를 구축하는 게 좋을 듯합니다.
저는 어플 내 Assets 폴더에 엑셀 파일을 추가하고 불러오는 방식을 이용하려고 했지만,
실시간으로 데이터를 업그레이드시켜주기 위해서, FireStore를 사용하려고 합니다.
그. 런. 데. Realtime Database에서는 JSON 가져오기라는 것이 있어 데이터를 저장하기가 편했는데,
여기엔 찾아봐도 그런 것이 없네요.
그래서 데이터를 저장해주는 임시 어플을 하나 만들어보겠습니다.
1. Build.gradle 라이브러리 추가
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
//firebase
implementation 'com.google.firebase:firebase-core:17.1.0'
implementation 'com.google.firebase:firebase-analytics:17.1.0'
implementation 'com.google.firebase:firebase-firestore:21.0.0'
//엑셀파일 읽기 쓰기
implementation 'org.apache.poi:poi:3.9'
implementation "org.apache.poi:poi-ooxml:3.9"
}
dependencies에 firebase와 poi 라이브러리를 추가해줍니다.
2. Firebase 연결
파이어베이스 연결은 이전 포스팅을 참고해주세요~^^
2019/08/24 - [안드로이드 개발/Kotlin으로 어플 만들기] - (코틀린) firebase console 연결하기(프로젝트 만들기)
3. Assets 폴더 만들기
에셋 폴더를 만들어줍니다. 이것도 아래 포스팅을 참고해주세요~!
2019/08/04 - [안드로이드 개발] - [Android Studio] assets 폴더 만들기
4. 엑셀 파일 추가, 불러오기
이제 엑셀 파일(.xls)을 불러오는 작업을 할 거예요.
(xlsx 파일로 도전하려 했으나 자꾸 오류가 나서...ㅠ 결국 xls로 도전했답니다.)
이것도!!! 이전 포스팅에 있습니다.. ㅎㅎ
2019/08/06 - [안드로이드 개발/Kotlin으로 어플 만들기] - (Kotlin) Poi를 사용하여 엑셀 데이터 가져오기(1)
5. FireStore에 데이터 넘기기
1) firestore 규칙
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
사용자가 데이터를 보내 저장하는 것이 있다면 write 제한을 풀어줘야 합니다. 테스트 모드로 시작합니다.
2) 코틀린
//cloud firestore 초기화, 콜렉션은 여기서 해도 되고 아래에서 정의해도 됩니다.
val quiz_db = FirebaseFirestore.getInstance().collection( "quiz_hb")
//저장할 데이터를 만들어줍니다. (dataToSave는 mutableMapOf로 정의해줬습니다)
dataToSave.put( "no" , itemlist[i].item_no)
dataToSave.put("year" , itemlist[i].year)
dataToSave.put("exam" , itemlist[i].exam)
dataToSave.put("fullname" , itemlist[i].fullname)
//저는 여러개의 다큐먼트가 필요해서 다큐먼트도 유동적으로 생성되게 했습니다.
quiz_db.document(itemlist[i].item_no)
//set("저장할 데이터")
.set(dataToSave)
.addOnSuccessListener { documentReference ->
Log.d(TAG, "저장 성공")
}
.addOnFailureListener { e ->
Log.w(TAG, "Error adding document", e)
}
코드가 매우 간단하죠? ㅎㅎ
6 결과물
이렇게 컬렉션(quiz_hb)에 여러 가지 다큐먼트(hb_0000x)가 생성되었고,
그 안에 필드(DataToSave)가 잘 저장되어 있는 모습입니다.
끝.
'안드로이드 개발 > Kotlin으로 어플 만들기' 카테고리의 다른 글
(코틀린) firebase console 연결하기(프로젝트 만들기) (0) | 2019.08.24 |
---|---|
(Kotlin) afollestad의 Material Dialog 라이브러리 사용하기 (0) | 2019.08.18 |
(Kotlin) FlashCard의 완성, Flip & Swipe Animation (2) | 2019.08.17 |
(Kotlin) 인피니티 사이클 뷰페이저(infinitecycleviewpager) 예제 (0) | 2019.08.15 |
(Kotlin) Card Flip Animation으로 Flashcard 만들기 (0) | 2019.08.15 |