jxl.jar 라이브러리 사용
=> project -> Build Path를 통하여 jar파일(라이브러리)을 추가 해줘야한다.!!
엑셀 파일 생성 및 쓰고 저장
1. 파일 다루기 위한 File 객체 필요 : new File("저장할 경로 및 파일명.xls); => import java.io.File;
2. 엑셀파일 구조 : WorkBook.createWorkbook(File객체); // WritableWorkbook 객체를 반환
WritableWorkbook wb = new WorkBook.createWorkbook(File객체); // 이거 자체가 객체를 반환
=> import jxl.write.WritableWorkbook;
3. 다음 sheet 생성 : wb.createSheet("시트이름","시트위치(인덱스번호)"); => WritableSheet 반환(쓰기위한 시트)
WritableSheet s1 = wb.createSheet("첫번째",0); 이런 형태
=> import jxl.write.WritableSheet;
4. 다음 입력 받을 수 있는 Label 객체 생성 : new Label(열번호, 행번호, "데이터");
Label label = new Label(0,0,"데이터"); // 첫번째 칸, 첫번째 행에, 데이터 값을 집어넣겠다
=> import jxl.write.Label;
5. s1.addCell(label); 생성된 시트의 기본 셀에 라벨 객체 추가
=> import jxl.Cell;
6. 실제 적용(쓰기)
wb.write();
7.파일 저장 및 닫기
wb.close();
작성한 엑셀파일을 가져오기
1. 마찬가지로 파일을 다루는 것이기에 File클래스의 객체를 만들어야한다.
File f = new File("파일이 있는경로");
2. 읽기만 할거이므로 WorkBook 클래스 사용
=> import jxl.Workbook;
3. getWorkbook 메소드를 사용하여 파일 열기
4. 몇번째 시트를 열건지 정해서 해당하는 시트열기 Sheet클래스 getSheet메소드
=> import jxl.Sheet;
5.몇번째 셀을 가져올것인지 정해서 값 넘겨주기 Cell클래스의 getCell메소드
=> import jxl.Cell;
예제)
엑셀을 읽어서 결혼하고 집소유자들의 정보만 bank_data.html과 bank_data.xls로 각각 저장하기
단, 검색조건은 콘솔창에서 입력
MainClass : 전체 흐름을 담당 (일종의 Controller) / main() 포함
BankClass : 모든 변수들은 모두 외부 접근 불가!!!
loan : 대출 여부 (있음, 없음, 모름 등..)
duration : 은행 가입 기간 (일 단위)
contact : 연락방법 (한글로 저장 : 학생, 은퇴, 등..)
CustomerClass : 모든 변수들은 모두 외부 접근 불가!!! BankClass 를 상속
age : 나이 (숫자로 저장)
job : 직업 (한글로 저장 : 학생, 은퇴, 등..)
marital : 결혼 여부 (한글로 저장 : 기혼, 미혼, , 이혼, 모름 등)
housing : 집 소유 여부 (한글로 저장 : 소유, 미소유, 모름)
DataClass : 전체 데이터를 보유 : CustomerClass 객체들 저장
MethodsInterface : MethodClass에서 사용할 메서드 명들을 정의
MethodClass : 실행 메서드들만 보유 / 해당 메서드들은 MethodsInterface 를 구현받음
ExcelReaderClass : 엑셀 파일 읽기 / 해당 메서드들은 객체 생성 없이 사용할 수 있도록 선언
ExcelWriterClass : 엑셀 파일 쓰기 / 해당 메서드들은 객체 생성 없이 사용할 수 있도록 선언
PrintClass : 출력 전용 클래스
"c:/filetest/bank_data.html" 파일을 생성하는 역할 담당
해당 메서드들은 객체 생성 없이 사용할 수 있도록 선언
1차 설계..
MainClass => 엑셀 파일의 경로를 지정
BankClass => 대출,은행가입기간, 연락방법 변수 선언
CustomerClass => 나이,직업,결혼여부,집소유여부 변수선언 => 데이터를 영어 -> 한글로 변환
문자열로 들어오는 값을 정수형으로 변환
이 클래스에서 한글로 변환시켜 값을 돌려줄것이기에 변환 메소드 생성
EnglishToHangul => 값을 받을 매개변수 선언( 영어, 한글)
DataClass => 데이터 2타입 선언 => 1. 변환된 데이터를 담을 데이터 변수
2.전체 데이터를 담을 데이터 변수
ExcelReaderClass => 엑셀 파일을 읽어오는 클래스
파일을 읽어오는 클래스
다음에 이 메소드의 코드를 줄이는 작업을 할 것이다.
첫번째 try 구문 안에 나열되어있던 cell을 배열 처리 함으로써 코드가 줄었다.
다음 작업은 두번째 try구문안에 있는 cell들을 줄일 것이다.
최종 클래스 코드
두번째 try구문안의 cell의 규칙성을 찾아냄 => 반복문인 for문을 사용하여 좀 더 간략하게 줄임.
2차 설계..
콘솔로부터 2가지 검색어를 입력받아 맞는 값을 찾아서 값에 맞는 HTML파일을 만들 것이다.
필요한 메소드 2개 : 1.검색을 위한 메소드, (2개의 값을 받기에 매개변수도 2개 선언)
2.HTML을 만들 메소드
단, 메소드는 MethodInterface에서 오버라이딩 하여 만들것
일단 Scanner클래스 까지만 생성 해놓고 MethodClass로 이동
1. 검색을 위한 메소드 생성
2. 검색 결과를 토대로 HTML파일을 생성하는 메소드 생성
메인에서 실행 시켜야 하기 때문에 return값이 있어야 한다.
리턴된 값을 PrintClass로 보내서 파일 생성 마무리
빈칸.. admin이 잘못 적혀있어서 비어있다 admin => admin. 으로 변경
3차 설계..
만들어진 데이터를 가지고 엑셀 파일 만들기
Main => 파일 생성 경로 설정 및 생성 메소드 호출
ExcelWriterClass => 파일을 만들기위한 File클래스와 WritableWorkbook 클래스 사용
엑셀 파일 만들때 먼저 구조를 만들고(Workbook->createWorkbook메소드)
시트와 글을 입력할 수 있게 라벨을 만들어 cell에 저장
for문 안쪽에 중복 코드가 많다. 줄여보자
먼저 Label을 배열로 묶어 주었다.
그리고 계속 반복됐던 result.addCell(label);을 for문으로 묶어줌
데이터 위에 제목을 추가해보자.
먼저 데이터 클래스에다 헤더 부분 데이터를 추가시켜준다.
ExcelWriterClass로 돌아와서 제목부분을 추가 할 코드 작성
기존의 label[ ] 내부의 공통적인 코드를 변수에 저장하여 코드 길이를 한번 더 줄여줬다.
끝!
'Learn > KH정보교육원' 카테고리의 다른 글
[KH정보교육원 당산] 14일차 (외부라이브러리 사용 마지막) (0) | 2021.03.29 |
---|---|
[KH정보교육원 당산] 13일차 (예제 마무리 및 배운거를 토대로 시험.. ) (0) | 2021.03.26 |
[KH정보교육원 당산] 11일차( 상속예제, 인터페이스, 추상클래스) (0) | 2021.03.24 |
[KH정보교육원 당산] 10일차 ( 상속예제 ) (0) | 2021.03.23 |
[KH정보교육원 당산] 9일차 ( interface 및 첫번째 테스트) (0) | 2021.03.22 |