안드로이드에서 Excel파일을 생성하려면 별도의 라이브러리가 필요합니다.
1.라이브러리 추가하기
https://poi.apache.org/download.html#POI-4.1.0
위 링크를 눌러 POI 라이브러리를 다운로드 합니다.
2019년 4월 9일 현재 4.1.0이 최신버전입니다.
위 그림의 표시된 압축파일을 다운로드 한 후 압축을 풀어줍니다.
압축을 풀면 위와같이 많은 파일들이 나오는데, 필요한 것은 poi-4.1.0.jar입니다.
android studio에서 메뉴 File-Project Structure를 클릭합니다.
라이브러리를 추가하기 위해 + 버튼을 눌러줍니다.
Import .JAR/.AAR Package를 선택합니다.
왼쪽에 poi-4.1.0이 추가 된것을 확인할 수 있습니다.
위의 탭에서 Dependencies를 선택한 후 +버튼을 눌러 Module dependency를 선택합니다.
오른쪽의 폴더찾기 버튼을 눌러 poi-4.1.0 라이브러리를 찾아 선택해 줍니다.
라이브러리가 선택된 것을 확인한 후 OK를 눌러줍니다.
라이브러리가 정상적으로 추가되었습니다.
2. Excel파일 만들기
이제 본격적으로 Excel 파일을 만듭니다.
자세한 사용법은 POI 홈페이지에 자세히 나와있습니다.
https://poi.apache.org/components/spreadsheet/quick-guide.html#NewWorkbook
1) Workbook 생성
Workbook wb = new HSSFWorkbook(); //or new XSSFWorkbook();
Excel 파일을 생성한다고 생각하시면 됩니다.
주석과 같이 XSSFWorkbook()으로도 생성가능하다고 합니다.
2) Sheet 생성
Sheet sheet1 = wb.createSheet("new sheet");
Sheet sheet2 = wb.createSheet("second sheet");
Sheet 생성은 Workbook을 먼저 생성해야만 생성할 수 있습니다.
뒤에 이름을 적어주지 않으면 이름이 없는 sheet가 생성됩니다.
3) Row 생성
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(0);
데이터를 입력하려면 행을 먼저 생성해야 합니다.
뒤의 숫자는 행번호 입니다.
4) Cell 생성및 데이터 입력
Cell cell = row.createCell(0);
cell.setCellValue(1);
위에서 생성된 행에 첫번째 열의 셀을 생성하였습니다.
그리고 '1'이라는 데이터를 입력하였습니다.
다음 행으로 넘어갈때는 또 다시 3번과 같이 Row를 생성하고,
4번과 같이 Cell을 생성하여 데이터를 입력해 주면 됩니다.
5) 파일생성
String filename="test.xls";
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
File xls = new File(dir, filename);
try {
FileOutputStream os = new FileOutputStream(xls);
wb.write(os);
} catch (IOException e) {
e.printStackTrace();
}
저의 경우 파일을 찾기 쉽게 내문서 폴더로 저장을 하였습니다.
Line 2 : 내문서의 위치를 가져옵니다.
6) 이메일 보내기
Uri uri = Uri.parse("mailto:");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra(Intent.EXTRA_SUBJECT, "excel file email test";
it.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + dir + "/" + filename));
startActivity(it);
만약 파일을 찾기 힘들다면, 파일 생성과 함께 이메일로도 보낼 수 있습니다.
한글도 잘 인식됩니다.^^
'Study > Android' 카테고리의 다른 글
네트워크 연결 확인 (NetworkInfo Deprecated 대체) (0) | 2021.03.29 |
---|---|
Lint found fatal errors while assembling a release target. (0) | 2019.05.15 |
android 9(P) notification permission (0) | 2019.04.05 |
android P(9) Cleartext HTTP traffic to ..not permitted (0) | 2019.04.05 |
Android 8이상에서 재부팅시 서비스 시작하기(안될때) (1) | 2019.04.05 |