[안드로이드] 엑셀 파일 생성, 내보내기


엑셀 로고

어플리케이션을 만들다 보면 사용자가 저장한 데이터를 가공하여 내보내 주는 기능을 구현할 때가 있습니다.

데이터 가공에 가장 적합한 엑셀 파일을 만들어 공유하는 것을 목표로 포스팅하겠습니다.


1. Result

엑셀 결과

엑셀 결과



2. Step by Step

2-1. Apache POI

2-1-1. 라이브러리 다운로드

  • 안드로이드 (자바) 에서 엑셀 파일을 바로 쓰고 읽고 수정 하는 일련의 작업들을 바로 수행할 수는 없습니다. 이러한 작업을 할 수 있도록 도와주는 라이브러리인 Apache 에서 제공하는 POI 라이브러리를 이용하여 엑셀을 다루도록 하겠습니다.

http://poi.apache.org/download.html#POI-3.17

위 링크를 클릭해 라이브러리 다운로드 홈페이지로 이동하겠습니다.

poi download

  • 홈페이지에서 Binary Distribution 을 보면 가장 최근 안정화된 버전을 배포하고 있습니다. poi-bin 파일을 클릭해주세요.


apache download

  • 그럼 위 사진과 같은 페이지가 나오는데 어떤 미러링 사이트를 통해 받을지 정합니다.


download

  • 다운로드 완료 후 압축을 풀면 위와 같은 파일들이 나옵니다. 이제 이 파일을 안드로이드 프로젝트에 적용 시키도록 하겠습니다.



2-1-1. 안드로이드 스튜디오 라이브러리 적용

  • 먼저 파일 탐색기를 프로젝트 단으로 봐주세요

android project


  • 프로젝트 > app > libs 에 방금 다운로드 받은 POI 라이브러리 파일을 옮겨주세요

libs

move the files


  • 간단하게 생성과 쓰기를 해볼거기 때문에 poi-3.17.jar 파일만 옮겼습니다.

  • 파일을 옮겨지면 안드로이드 스튜디오에서 아래와 같이 라이브러리 파일이 정상적으로 올라온 것을 확인할 수 있습니다.

poi


  • 아래 사진처럼 poi-3.17.jar 파일을 우클릭 한 다음 ‘Add As Library’ 를 눌러주시면 POI 라이브러리 적용이 완료됩니다.

add ad library



2-2 엑셀 생성, 쓰기

private void saveExcel(){
    Workbook workbook = new HSSFWorkbook();

    Sheet sheet = workbook.createSheet(); // 새로운 시트 생성

    Row row = sheet.createRow(0); // 새로운 행 생성
    Cell cell;

    cell = row.createCell(0); // 1번 셀 생성
    cell.setCellValue("이름"); // 1번 셀 값 입력

    cell = row.createCell(1); // 2번 셀 생성
    cell.setCellValue("나이"); // 2번 셀 값 입력

    for(int i = 0; i < mItems.size() ; i++){ // 데이터 엑셀에 입력
        row = sheet.createRow(i+1);
        cell = row.createCell(0);
        cell.setCellValue(mItems.get(i).getName());
        cell = row.createCell(1);
        cell.setCellValue(mItems.get(i).getAge());
    }

    File xlsFile = new File(getExternalFilesDir(null),"test.xls");
    try{
        FileOutputStream os = new FileOutputStream(xlsFile);
        workbook.write(os); // 외부 저장소에 엑셀 파일 생성
    }catch (IOException e){
        e.printStackTrace();
    }
    Toast.makeText(getApplicationContext(),xlsFile.getAbsolutePath()+"에 저장되었습니다",Toast.LENGTH_SHORT).show();
}

excel result

  • 제가 입력했던 데이터가 엑셀 파일로 만들어 진 것을 확인 할 수 있습니다.



2-3 엑셀 내보내기 (ACTION_SEND)

  • 방금 만들어진 엑셀 파일을 내보내보도록 하겠습니다.

    Uri path = Uri.fromFile(xlsFile);
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("application/excel");
    shareIntent.putExtra(Intent.EXTRA_STREAM,path);
    startActivity(Intent.createChooser(shareIntent,"엑셀 내보내기"));
    

excel send

excel kakao


3. Source Code

전체 소스 코드는 GitHub 에 공유했습니다.