안드로이드

[안드로이드/Android] 안드로이드에서 엑셀 Excel(.xlsx) 파일 읽기, Read Excel(.xlsx) file in android

알통몬_ 2023. 5. 24. 11:37
반응형

1. Apache POI 라이브러리 추가하기

dependencies {
	...
    implementation 'org.apache.poi:poi:3.9'
    implementation 'org.apache.poi:poi-ooxml:3.9'
    ...
}

버전은 3.9로 해주시면 됩니다. 최신버전인 5.2.2로 해봤는데 아래와 같은 에러가 발생했고, 저는 별다른 해결책을 찾지 못했습니다.

그래서 3.9로 진행했씁니다.

1. app/src/main 에 assets 디렉토리만들고 읽으려는 .xlsx 파일 추가하기

2. 엑셀읽어오는 함수 만들기

    fun readExcel(fileName: String) {
        val assetManager = assets
        val inputStream = assetManager.open(fileName) // 파일 열기
        val myWorkBook = WorkbookFactory.create(inputStream) // 불러온 파일로 워크북 생성하기

        val sheet = myWorkBook.getSheetAt(0) // 읽어올 엑셀의 시트 index 입력

        val rowIterator = sheet.iterator()

        val activityList = ArrayList<String>()

        var rowNo = 0

        while(rowIterator.hasNext()) {
            val myRow = rowIterator.next() as XSSFRow // HSSFRow 로 캐스팅할 경우 .xls 파일 읽음
            if(rowNo != 0) {
                val cellIterator = myRow.iterator()

                var colNo = 0

                while (cellIterator.hasNext()) {
                    val myCell = cellIterator.next() as XSSFCell // HSSFCell 로 캐스팅할 경우 .xls 파일 읽음
                    // 특정 열만 읽기
                    if(colNo == 2) {
                        a = myCell.toString()
                    }
                    // 있는 모든 열 읽기
                    when (colNo) {
                        0 -> {//2번째 열이라면,
                            a = myCell.toString()
                        }
                        1 -> {
                            b = myCell.toString()
                        }
                        2 -> {
                            c = myCell.toString()
                        }
                        3 -> {
                            d = myCell.toString()
                        }
                        ...
                    }
                    // 필요한 경우 해당 데이터 들을 배열이나 리스트에 담아 사용하면 됩니다.
                    colNo++
                }
            }

            rowNo++
        }
    }

3. 함수 호출

try {
	readExcel("aaa.xlsx")	
} catch(e: Exception) {
	e.printStackTrace()
}

이상입니다.

 

다음 포스팅에서는 엑셀을 만들고 파일을 생성하여 내보내는 방법에 대해 알아보겠씁니다.

반응형