https://github.com/lnjky/fashion_people
GitHub - lnjky/fashion_people: 패션 추천 어플
패션 추천 어플. Contribute to lnjky/fashion_people development by creating an account on GitHub.
github.com
코드 전체를 보려면 위에 링크를 통해 확인할 수 있습니다.
위 어플을 만들 때 공공데이터의 단기예보 API를 받아와야 할 일이 있었다.
그런데 그 과정에서 가져온 데이터와 지역별 좌표값을 받아야 하는 일이 있었는데 이걸 해결하기 위해
StackOverflow나 구글, 티스토리, 네이버 블로그 등 여러가지 찾아봤다.
우선 엑셀파일을 안에 넣어야하는데 경로는 이렇다.
보통 폴더가 없어서 폴더를 생성하면 된다.
이 경로로 가서 폴더를 생성하면 프로젝트 이름 \ app \ src \ main \ assets라고 폴더가 생긴다.
이 폴더에 원하는 엑셀 파일을 넣어주면 된다.
그러면 끝인줄 알았겠지만 아니다.
안드로이드 스튜디오는 원래 엑셀파일을 읽어오는 기능을 제공해주지 않아 그런 기능을 가진 라이브러리를 추가해줘야 한다.
build.gradle에 아래의 문장을 추가해주고 Sync를 눌러주면 된다.
// Excel
implementation 'net.sourceforge.jexcelapi:jxl:2.6.12'
이러면 코드를 제외하고 엑셀파일을 읽기 위한 준비가 거의 끝났다.
코드는 이 블로그를 참고하였다.
https://toubi-tobap.tistory.com/11
기상청 날씨 api_엑셀파일에서 지역 격자값 가져와 날씨 가져오기 (feat.공공데이터포털)
전에 날씨 api를 사용하여 날씨 정보 가져오기를 해봤다. 기상청 날씨 api 사용 기상청 날씨 api (feat.공공데이터포털) 날씨를 불러오는 기능을 android 프로젝트에 넣으려고 찾아보았다. 먼저 참고한
toubi-tobap.tistory.com
엑셀파일 읽기 이외에도 공공데이터 활용하기나 현재시간 가져오기, GPS 활용하기 등 코드를 작성하는데 도움이 되었다.
그렇다면 코드를 한번 살펴보도록 하자.
// 저장한 엑셀파일 읽어오기
public void readExcel(String localName) {
try {
InputStream is = getBaseContext().getResources().getAssets().open("local_name.xls");
Workbook wb = Workbook.getWorkbook(is);
if (wb != null) {
Sheet sheet = wb.getSheet(0);
if (sheet != null) {
int colTotal = sheet.getColumns();
int rowIndexStart = 1;
int rowTotal = sheet.getColumn(colTotal - 1).length;
for (int row = rowIndexStart; row < rowTotal; row++) {
String contents = sheet.getCell(0, row).getContents();
if (contents.contains(localName)) {
x = sheet.getCell(1, row).getContents();
y = sheet.getCell(2, row).getContents();
row = rowTotal;
}
}
}
}
} catch (IOException e) {
Log.i("READ_EXCEL1", e.getMessage());
e.printStackTrace();
} catch (BiffException e) {
Log.i("READ_EXCEL1", e.getMessage());
e.printStackTrace();
}
// x, y = String형 전역변수
Log.i("격자값", "x = " + x + " y = " + y);
}
전체 코드이다.
실제로 사용했던 코드기 때문에 예제형식으로 봐주면 될 것 같다.
try {
InputStream is = getBaseContext().getResources().getAssets().open("local_name.xls");
Workbook wb = Workbook.getWorkbook(is);
우선 이부분에서 "local_name.xls" 부분을 assets 폴더에 옮긴 이름으로 바꿔주면 된다.
for (int row = rowIndexStart; row < rowTotal; row++) {
String contents = sheet.getCell(0, row).getContents();
if (contents.contains(localName)) {
x = sheet.getCell(1, row).getContents();
y = sheet.getCell(2, row).getContents();
row = rowTotal;
이 부분에서 x와 y값에는 각각에 맞는 데이터를 넣어주면 된다.
내가 올렸던 엑셀파일은 이런 모습이다.
엑셀 파일을 읽을 때 읽을 위치를 정하는 것이 중요하다.
여기서 x = sheet.getCell(1,row).getContents(); 부분에서 0은 각각 효자동, 명동 등을 말하고
1은 격자X, 2는 격자Y를 나타낸다.
시작 위치가 틀리면 안되니 주의하도록 해야한다.
그리고 xlsx파일은 제대로 읽히지 않아서 xls파일로 변환을 해줘야 한다.
단순히 확장자 명만 바꾼다고 되는게 아니라서 xls로 바꿔야 하는데 귀찮긴 하지만 매우 간단하다.
먼저 xlsx파일을 열고 다른이름으로 저장을 한다. 그 때
이렇게 저장형식을 xls로 선택해서 다시 저장하면 된다.
여러 사이트와 작성했던 코드를 참고하면서 작성한거라 뒤죽박죽이고 틀린 부분이 있을 수 있습니다.
'안드로이드' 카테고리의 다른 글
[안드로이드] 툴바 include (1) | 2022.12.21 |
---|---|
[안드로이드] SimpleDateFormat (0) | 2022.12.20 |
[안드로이드] 대표 아이콘 바꾸기 (0) | 2022.12.16 |
[안드로이드] 인터넷 연결 (0) | 2022.12.16 |
[안드로이드] 스플래시 액티비티 (0) | 2022.12.16 |