PersesTitan(페르) 기술블로그

[Vane] xrm라이브러리 1.0.2 (엑셀 파일 오브젝트화 시키기) 본문

VaneProject/maven

[Vane] xrm라이브러리 1.0.2 (엑셀 파일 오브젝트화 시키기)

PersesTitan(페르) 2024. 2. 11. 11:42

Xlsx(Xls) Relational Mapping (xrm)은 엑셀 파일을 Java클래스 타입으로 변환해 주는 라이브러리입니다.

 

maven

<dependency>
    <groupId>io.github.vaneproject</groupId>
    <artifactId>xrm</artifactId>
    <version>1.0.2</version>
</dependency>

gradle

implementation 'io.github.vaneproject:xrm:1.0.2'

gradle.kts

implementation("io.github.vaneproject:xrm:1.0.2")

설명

@Xrm(String value)

변수 필드에 정의하는 어노테이션입니다. 만약 해당 어노테이션을 사용하지 않을 경우 해당 변수는 사용되지 않습니다.

value에 머리글을 입력해 주면 됩니다. 만약에 값을 입력하지 않을 경우 변수명이 기본값으로 적용됩니다.

 

ReadXrm

생성자

파일을 읽어서 List<X>값을 반환하도록 해주는 클래스 파일입니다.

public ReadXrm(Class<X> klass)

함수

* sheet 매개변수는 위치(int) 값이나 이름(String)으로 찾을 수 있습니다.

 

readSimpleXlsx

간단한 구조의 엑셀 파일 형태를 사용할 때 유용합니다.

머리말을 0 인덱스부터 공백이거나 셀이 끝일 때까지 읽게 됩니다.

데이터는 처음부터 전체 셀이 비어있을 때까지 읽습니다.

List<X> readSimpleXlsx([String|File] file, [int|String] sheet);

유용한 테이블 예시

머리말1 머리말2 머리말3 머리말4
데이터 데이터 데이터 데이터
데이터 데이터 데이터 데이터

해당 테이블 예시 코드

ReadXrm<Example> readXrm = new ReadXrm<>(Example.class);
List<Example> list = readXrm.readSimpleXlsx("파일명.xlsx", 0);

 

 

readDetailXlsx

파일 구조가 복잡하여 자세한 설정을 해주어야할때 사용하면 유리한 함수입니다.

  • column: 머리말 행 인덱스
  • start: 데이터 시작 행 인덱스
  • end: 데이터 마지막 행 인덱스
  • first: 데이터 시작 열 인덱스
  • last: 데이터 마지막 열 인덱스 
List<X> readDetailXlsx([String|File] file, [int|String] sheet, int column,
		               int start, int end, int first, int last);

유용한 테이블 예시

           
    머리말1 머리말2 머리말3 머리말4
           
    데이터 데이터 데이터 데이터
    데이터 데이터 데이터 데이터
    데이터 데이터 데이터 데이터

해당 테이블 예시 코드

ReadXrm<Example> readXrm = new ReadXrm<>(Example.class);
List<Example> list = readXrm.readDetailXlsx("파일명.xlsx", 0, 1, 3, 5, 2, 5);

 

 

readStartXlsx

시작 인덱스만 지정하면 될때 사용하면 유리한 함수입니다.

머리말을 0 인덱스부터 공백이거나 셀이 끝일 때까지 읽게 됩니다.

데이터는 처음부터 전체 셀이 비어있을 때까지 읽습니다.

  • start: 데이터 시작 행 인덱스
  • first: 데이터 시작 열 인덱스
List<X> readStartXlsx([File|String] file, [int|String] sheet, int start, int first)

유용한 테이블 예시

         
    머리말1 머리말2 머리말3
    데이터 데이터 데이터
    데이터 데이터 데이터

해당 테이블 예시 코드

ReadXrm<Example> readXrm = new ReadXrm<>(Example.class);
List<Example> list = readXrm.readStartXlsx("파일명.xlsx", 0, 1, 2);

 

예제

 

Example.java

import com.vane.xrm.Xrm;

public class Example {
    @Xrm("번호")
    private int number;
    @Xrm("이름")
    private String name;
    @Xrm("성별")
    private String gender;

    public void printExample() {
        System.out.printf("번호: %d, 이름: '%s', 성별: '%s'%n", number, name, gender);
    }
}

Main.java

import com.vane.xrm.ReadXrm;

import java.net.URL;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        ReadXrm<Example> readXrm = new ReadXrm<>(Example.class);
        List<Example> list = readXrm.readSimpleXlsx("example.xlsx", 0);
        for (Example example : list)
            example.printExample();
    }
}

 

출력

번호: 1, 이름: '이름1', 성별: '남자'
번호: 2, 이름: '이름2', 성별: '여자'
번호: 3, 이름: '이름3', 성별: '남자'
번호: 4, 이름: '이름4', 성별: '남자'
번호: 5, 이름: '이름5', 성별: '여자'

 

example.xlsx