= Apache POI? =
워드나 파워포인트, 엑셀에 저장한 데이터를 Java로 가지고 와서 사용하는 패키지.
기능 상 제약이 많지만, 경우에 따라서 유용하게 사용할 수 있습니다.
엑셀만이라면 Jxl 이라는 패키지도 존재하지만 android에서는 jxl을 사용할 경우 한글을 제대로 가지고 오지 못하여 apache POI를 사용해야 합니다.
안드로이드에서 테스트 몇 번 해본 거 뿐이라서 한글 문제점을 해결할 수 있다면 (혹은 한글을 사용하지 않는다면) jxl을 사용하는것도 좋습니다.
2010년 11월 12일 기준 bin 압축 파일 중 poi-3.7-20101029.jar 파일이 관련 API를 가지고 있는 jar 파일입니다.
= 엑셀에서 내용읽기 =
... import org.apache.poi.hssf.usermodel.*; ... //여러가지 타입으로 파일을 읽을 수 있는데 //android 내부에서 파일을 가지고 오는 //getResources().openRawResource(R.raw.파일이름) //은 inputstream입니다. 물론 이것도 구현되어 있습니다. HSSFWorkbook workbook = null; //엑셀을 읽어오는 Workbook 객체 생성 workbook = new HSSFWorkbook(inputstream); //객체에 파일 넣기. HSSFSheet sheet = workbook.getSheetAt(0); //Sheet도 0번부터 시작합니다. //apache poi의 단점은 엑셀의 row,column의 size를 받아올 수 없는것 같습니다... //(아마 방법이 있을 거 같긴 하지만, 모르겠네요.) String[][] data = new String[40][40]; for(int i = 0 ; i < 13 ; i++){ HSSFRow row = sheet.getRow(i); //이런 방식으로 sheet의 row를 가지고 온 후 for(int j = 0 ; j < 13 ; j++){ HSSFCell cell = row.getCell(j); //row에서 cell을 읽은 방식으로 사용합니다. if(cell != null) { //jxl은 cell이 비였을 경우 "" (nil)을, poi는 null로 인식하므로 null인지 판단 해줘야 합니다. if( cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){ //숫자일 경우 double 타입의 숫자로 가지고 오는 별도의 함수가 존재합니다. 이를 판단해 줍시다. data[j][i] = String.valueOf( cell.getNumericCellValue()); } else { data[j][i] = cell.getStringCellValue(); } } else { data[j][i] = ""; } } }
반응형
'Programming > Java' 카테고리의 다른 글
hadoop mapreduce.task.io.sort.mb 에 대해 (0) | 2014.12.12 |
---|---|
HiBench를 새로운 hadoop인 yarn에서 실행할때 일부 밴치마크가 제대로 작동하지 않는 버그 (1) | 2014.04.16 |
HiBench benchmark using random-text-writer have issue in yarn, new hadoop 2.x (0) | 2014.04.16 |
Hadoop common version(v2.1.0 beta) compile 하기 (0) | 2013.08.23 |
[Java]File Class를 사용해서 Directory 검색하기 (0) | 2011.02.15 |